2015 [11] Дешифрование
Текстовый файл «encrypttext.txt»был получен, применяя 2015 раз функцию Encrypt (см. листинг 1) к исходному файлу. Расшифруйте файл «encrypttext.txt» по крайней мере в 1000 раз быстрее, чем он был зашифрован.
char * ReadMassFromFile(ifstream &inFile, int &outN) //1
{
char tempMass[10]; //2
char buff; //3
int i(0); //4
while (!inFile.eof() && (i<10)) //5
{
inFile.get(buff); //6
if (inFile) tempMass[i++] = buff; //7
}
char * outMass = new char [i]; //8
for (int j = 0; j<i; j++) outMass[j] = tempMass[j]; //9
outN = i; //10
return outMass; //11
}
void EncryptMass(char * Mass, int n) //12
{
if (n!=10) return; //13
char temp[10]; //14
for (int i = 0; i < 10; i++) temp[i] = Mass[i]; //15
for(int i=0;i<n;i++) Mass[(i*i*i*i*i+i*i*i+9*i+8)%10]=temp[i]; //16
return; //17
}
void WriteMassToFile(ofstream &outFile, char * mass, int n) //18
{
for (int i=0; i<n; i++) outFile.put(mass[i]); //19
delete [] mass; //20
return; //21
}
int Encrypt(char * inFile, char* outFile) //22
{
ifstream openText(inFile); //23
ofstream encryptText(outFile); //24
if (!openText || !encryptText) return -1; //25
while (!openText.eof()) //27
{
int n; //28
char *buffMass = ReadMassFromFile(openText, n); //29
EncryptMass(buffMass, n); //30
WriteMassToFile(encryptText,buffMass, n); //31
}
return 1; //32
}
Листинг 1. Исходный код программы шифрования исходного файла