Реализации различных алгоритмов на Си / шифрование гаммированием
.doc
1. Задание
Написать программу, осуществляющую кодирование и раскодирование последовательности из входного файла заданным методом и сохраняющую результат в выходной файл. Имена файлов вводит пользователь. Режим работы с файлам – двоичный. Для алгоритмов шифрования/дешифрования пользователь должен вводить также ключ.
Вариант
4 – гаммирование
3. Листинг программы
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
const int N=32;
char* code(char* str, int* mass)
{
int count = 0;
char *res = (char*)malloc(strlen(str)*sizeof(char));
for(int i=0;i<=strlen(str);i++)
res[i]=str[i];
for(int i = 0; i < strlen(res); i++, count++)
{
if(count == (N-1))
count = 0;
res[i] = ((str[i])^mass[count]);
}
return res;
}
int main()
{
setlocale(LC_ALL,"Rus");
srand (time(NULL));
int mass[N];
for(int i = 0; i < N; i++)
mass[i] = rand()%100;
char file[100]="",str[100];
printf("Введите имя файла: ");
scanf("%s",file);
FILE *fp=fopen(file,"r+");
fgets(str,100,fp);
fclose(fp);
printf("\nИсходная строка: %s",str);
printf("\nЗакодированная строка: %s",code(str, mass));
printf("\nРаскодированная строка: %s",code(code(str, mass),mass));
getch();
}