V
Vasilii14
Здравствуйте, существует алгоритм шифрования файла.
Вот алгоритм:
Необходимо либо вывести 50 различных подходящих паролей, либо написать программу расшифровывающую исходный файл.
Не могли бы вы подсказать алгоритм расшифровки? Просто не могу понять, каким образом добиться расшифровки. Заранее спасибо!
Вот алгоритм:
C++:
#include <stdio.h>
int main(int argc, char *argv[])
{
FILE* fp,*fo;
unsigned char key[16]; //Ключ шифрования
unsigned char ck; //Свертка пароля
unsigned char buf[16];
int i,n;
if(argc!=4)
{
printf("Usage:\n\t myencrypt source.file.name encrypted.file.name password\n");
return 0;
}
n = strlen(argv[3]);
// Упаковываем пароль в один байт
for(i=0;i<n;i++)
ck^=i%2?argv[3][i]:(argv[3][i]+i*5)%255;
//Генерируем ключ длиной 16 байт из одного байта
for(i=0;i<16;i++)
key[i]=(char)((ck^(char)i*13)+203);
fp = fopen(argv[1],"rb+");
fo = fopen(argv[2],"wb+");
n=strlen(argv[1]);
for(i=0;i<n;i++)
argv[1][i]^=key[i%16];
fwrite(&n,sizeof(n),1,fo);
fwrite(argv[1],1,n,fo);
do{
n=fread(buf,1,16,fp);
for(i=0;i<n;i++)
buf[i]^=key[i];
fwrite(buf,1,n,fo);
}while(!feof(fp));
fclose(fp);
fclose(fo);
}
Необходимо либо вывести 50 различных подходящих паролей, либо написать программу расшифровывающую исходный файл.
Не могли бы вы подсказать алгоритм расшифровки? Просто не могу понять, каким образом добиться расшифровки. Заранее спасибо!