Алгоритм 2
1. Построить начальный вариант ключа k на основе сравнения частот знаков криптограммы и открытого текста.
2. Положить v = f(Dk(y)).
3. Положить k = k.
4. Поменять местами в нижней строке подстановки k некоторую пару букв, скажем и .
5. Положить у = f(Dk (y)).
6. Если v < v, то положить k = k, v = v и перейти к 4.
7. Перейти к шагу 3.
Алгоритм заканчивается, когда условие v < v не выполняется в течение некоторого числа итераций, например 100.
Переход на шаге 4 от k к k, связанный с транспозицией пары символов, имеет под собой следующее основание. На шаге 5 вычисляется величина
,
где — матрица, полученная из матрицы путем перестановки в ней столбцов с номерами и , а также строк с теми же номерами.
В силу отмеченного свойства на шаге 5 алгоритма ненужно проводить трудоемкую операцию вычисления матрицы биграмм непосредственно по «расшифрованному» тексту Dk(у). Достаточно вычислить лишь матрицу , а на следующих шагах алгоритма производить в ней одноименные перестановки строк и столбцов.
Выбор транспозиции (,) на шаге 4 можно производить, например, следующим естественным образом. Пусть — вектор, образованный буквами криптограммы, упорядоченными по убыванию частот. Тогда последовательность транспозиций можно выбрать такой:
В авторской работе показано, что алгоритм 2 является достаточно эффективным.
Частота встречаемости знаков*
В алфавитном порядке:
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
И |
Й |
К |
Л |
М |
Н |
О |
П |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
Ш |
Щ |
Ы |
Ь |
Ъ |
Э |
Ю |
Я |
62 |
14 |
38 |
13 |
25 |
72 |
7 |
16 |
62 |
10 |
28 |
35 |
26 |
53 |
90 |
23 |
40 |
45 |
53 |
21 |
2 |
9 |
4 |
12 |
6 |
3 |
16 |
7 |
7 |
3 |
6 |
18 |
В порядке убывания частот встречаемости:
О |
Е |
А |
И |
Н |
Т |
С |
Р |
В |
Л |
К |
М |
Д |
П |
У |
Я |
З |
Ы |
Б |
Г |
Ч |
Й |
Х |
Ж |
Ь |
Ъ |
Ш |
Ю |
Ц |
Щ |
Э |
Ф |
90 |
72 |
62 |
62 |
53 |
53 |
45 |
40 |
38 |
35 |
28 |
26 |
25 |
23 |
21 |
18 |
16 |
16 |
14 |
13 |
12 |
10 |
9 |
7 |
7 |
7 |
6 |
6 |
4 |
3 |
3 |
2 |