Рассмотрим функцию Encrypt(строки 22-32). Чтение блока данных перед шифрованием осуществляет функцияReadMassFromFile. В результате ее работы считывается блок данных длинной 10 байт из входного файла (строка 5). Полученный массив передается функции EncryptMass, которая преобразует его. Затем функция WriteMassToFileзаписывает преобразованные данные в выходной файл. Таким образом, непосредственное шифрование происходит в функции EncryptMass, которая осуществляет перестановку элементов массива. Новый индекс элемента с номером iвычисляется по формуле i3+2 (строка 16). Эта формула задает следующее отображение
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
2 |
3 |
0 |
9 |
6 |
7 |
8 |
5 |
4 |
1 |
Рассмотрим, как действует это преобразование применённое несколько раз:
0→2→0 : цикл длины 2;
1→3→9→1 : цикл длины 3;
4→6→8→4: цикл длины 3;
5→7→5: цикл длины 2.
Таким образом, после применения этого преобразование 6 раз подряд будет получен начальный текст. По условию задачи, преобразование применялось 2015 раз. Так как 2015 = 6*335 + 5, то для получения открытого текста необходимо применить функцию Encrypt к файлу encrypttext.txt один раз.
для получения открытого текста необходимо применить функцию Encrypt к файлу encrypttext.txt один раз