Создание и реализация самого простого криптоалгоритма - C (СИ)
Формулировка задачи:
#include <string.h>
#include <stdio.h>
#include <conio.h>
int main(void)
{
clrcscr ();
FILE *stream;
char ch;
stream = fopen("text.txt", "w+");
do
{
ch = fgetc(stream);
putch(ch);
}
while (ch != EOF);
fclose(stream);
return 0;
getch ();
}Решение задачи: «Создание и реализация самого простого криптоалгоритма»
textual
Листинг программы
#include<stdlib.h>
#include<conio.h>
#include<stdio.h>
main()
{
clrscr();
int i;
int key[5];
char *ch, ch2, ch_temp;
int temp;
FILE *in_1, *out_1, *in_2, *out_2;
printf("\n\t 1.zashifrovat'");
printf("\n\t 2.rashifroat'");
printf("\n");
ch2=getche();
printf("\n\tEnter key: ");
for(i=0; i<5; i++)
{
*ch=getche();
key[i]=atoi(ch);
}
switch(ch2)
{
case '1':
{
if ((in_1 = fopen("C:\\in.txt", "rt"))==NULL)
{
fprintf(stderr, "\n\tCannot open input file.\n");
return 1;
}
if ((out_1 = fopen("C:\\out.txt", "wt"))==NULL)
{
fprintf(stderr, "\n\tCannot open output file.\n");
return 1;
}
i=0;
while (!feof(in_1))
{
ch_temp=fgetc(in_1);
temp=ch_temp;
temp=temp+key[i];
i++;
fputc(temp, out_1);
if(i==5)
{
i=0;
}
}
fclose(in_1);
fclose(out_1);
}
break;
case '2':
{
if ((in_2 = fopen("C:\\out.txt", "rt"))==NULL)
{
fprintf(stderr, "\n\tCannot open input file.\n");
return 1;
}
if ((out_2 = fopen("C:\\out2.txt", "wt"))==NULL)
{
fprintf(stderr, "\n\tCannot open output file.\n");
return 1;
}
i=0;
while (!feof(in_2))
{
ch_temp=fgetc(in_2);
temp=ch_temp;
temp=temp-key[i];
i++;
fputc(temp, out_2);
if(i==5)
{
i=0;
}
}
fclose(in_2);
fclose(out_2);
}
}
return 0;
}
Объяснение кода листинга программы
- В начале программы объявляются переменные и функции:
i- счетчик;key- массив для хранения ключа;ch,ch2,ch_temp- переменные для работы с файлами и данными;temp- временная переменная для хранения числовых значений;in_1,out_1,in_2,out_2- файлы для ввода и вывода данных.
- Далее идет запрос на ввод ключа с помощью функции
getche(). - Затем выполняется проверка на открытие файлов
in.txtиout.txtдля чтения и записи соответственно. Если файлы не открылись, программа выводит сообщение об ошибке и завершается. - В случае успешного открытия файлов, программа начинает шифрование или дешифрование данных в зависимости от выбранного режима (1 или 2).
- В процессе шифрования или дешифрования каждый символ из входного файла считывается, к нему прибавляется или отнимается соответствующий элемент ключа, а затем результат записывается в выходной файл.
- После завершения обработки всех символов, файлы закрываются.
- Если в процессе работы программы возникнут ошибки (например, некорректный ввод данных), программа выведет сообщение об ошибке и завершится.
- В конце программы возвращается значение 0, что означает успешное выполнение.