Мне необходимо осуществить программный взлом шифра Цезаря
Ориентировочный алгоритм (постановка задачи):
- 1. Определить частоты символов алфавита. Занести их в массив FiA.
- 2. Определить частоты символов шифротекста. Занести их в массив FiC:
а) вычислить сколько раз случается тот или иной символ в шифротексте (занести в массив freq)
б) определить количество символов в шифротексте (l)
в) нормировать частоты символов, вычисленные в пункте 2 (a), результат поместить в массив FiC, то есть FiC[i]=freq[i]/l.
- 3. Найти такое значение k, при котором сумма одноименных разниц d была бы минимальной:
а) вычислить для всех значений k=0,1, ..., 26 суммы разниц
d=∑_(j=0)^26|FiA[j]-FiC[m]|, где m= (j-k+27) mod27
б) найти минимальную сумму разниц d;
в) запомнить значение k.
- 4. Расшифровать шифротекст, используя ключ k.
Но алгоритм выше, можно применять к текстам только английского языка. Это объясняется тем, что процесс анализа шифротекста выполнялся по модулю 27 (26 букв латинского алфавита и пробел). В случае анализа шифров других языков необходимо изменить в зависимости от количества букв в алфавите рассматриваемого значения модуля, по которому ведется анализ (русский)
Я перевернула весь Интернет в поисках хоть чего-то, отдалённо приближенного к истине, но ничегошеньки похожего мне найти не удалось, кругом одна лишь зашифровка, может кто-то уже сталкивался с похожим заданием, ибо у меня руки опускаются, а понимания совсем нет (ниже прикреплю сам файл таблицы с алфавитом и шифротекстом).
Дайте обратную связь, если у вас есть хоть какое-то понимание происходящего