Расшифровать сообщение с помощью аффинного шифра

Обновлено: 02.07.2024

Аффинного шифра является криптографическим методом на основе моно-буквенные замены шифра , то есть сказать , что оригинал письма заменяется только одной другой буквой, в отличие от шифра Хилла . Это код, который легко понять, но также один из самых простых для взлома. Создатель аффинного шифра неизвестен.

Резюме

Принцип

Шифрование

Мы начинаем с замены каждой буквы ее рангом в алфавите, начиная со строки 0 (некоторые варианты начинаются со строки 1):

В B ПРОТИВ D E F грамм ЧАС я J K L M НЕТ О п Q р S Т U V W Икс Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 год 22 23 24 25

В качестве ключа выбраны два целых числа a и b. Каждая светлая буква сначала заменяется ее числовым эквивалентом x, а затем шифруется путем вычисления остатка от евклидова деления на 26 аффинного выражения (т.е. ). в Икс + б ( в Икс + б ) мод 2 6 > 6>

Таким образом, чтобы зашифровать слово CODE с помощью шифра с аффинным ключом (17,3), его необходимо сначала преобразовать в серию чисел.

затем примените аффинную функцию

2; 14; 3; 4 → 37; 241; 54; 71

взять остатки в делении на 26

37; 241; 54; 71 → 11; 7; 2; 19

затем расшифруйте буквами

11; 7; 2; 19 → LHCT

Примечание

Если коэффициент a равен 1, то аффинное кодирование соответствует шифру Цезаря .

Расшифровка

Теорема Баше-Безу утверждает, что нельзя найти, и только когда простое с 26. Следовательно, кодовый ключ должен быть парой целых чисел, в которой простое с 26. k в ′ в ( в ; б ) в

LHCT → 11; 7; 2; 19 11; 7; 2; 19 → 8; 4; -1; 16 8; 4; -1; 16 → 184; 92; -23; 368 184; 92; -23; 368 -> 2; 14; 3; 4 2; 14; 3; 4 -> КОД

Криптоанализ

Всего 12 целых чисел от 0 до 26 и простое с 26 (1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25). Следовательно, есть только возможные ключи шифрования. Если мы знаем, что использовался аффинный код, мы можем взломать код грубой силой, попробовав 312 ключей. 12 × 26 год знак равно 312

В свете принципа Керкхоффа это отсутствие разнообразия делает эту систему очень небезопасной.

Варианты

Этот вариант предлагает преимущество, с одной стороны, в большем разнообразии символов, которые можно использовать (95), с другой стороны, в том, что взлом с помощью грубой силы немного дольше, потому что вам нужно пробовать 6840 ключей. Эту систему также очень легко программировать. Но взлом, наблюдая за частотами каждого символа, все же возможен.

Другая система состоит из группировки букв в пары и выполнения аффинного преобразования для каждой пары чисел. Это номер Хилла .

использовать

Аффинный шифр объединяет несколько простых систем шифрования, таких как шифрование со сдвигом, ключ (1, n), наиболее известными из которых являются ключевой код Цезаря (1.3) и ключ ROT13 (1.13) или симметричные шифры, такие как ключевой код Атбаша ( -1; 25).

Аффинный шифр - это тип моноалфавитного шифра подстановки , в котором каждая буква в алфавите сопоставляется с ее числовым эквивалентом, зашифровывается с помощью простой математической функции и преобразуется обратно в букву. Используемая формула означает, что каждая буква шифруется до одной другой буквы и обратно, что означает, что шифр по сути является стандартным шифром подстановки с правилом, определяющим, какая буква к какой идет. Таким образом, у него есть слабые места всех подстановочных шифров. Каждая буква зашифрована функцией ( ax + b ) mod 26 , где b - величина сдвига.

СОДЕРЖАНИЕ

Описание

В аффинном шифре буквы алфавита размера m сначала отображаются на целые числа в диапазоне 0 . m - 1 . Затем он использует модульную арифметику для преобразования целого числа, которому соответствует каждая буква открытого текста, в другое целое число, соответствующее букве зашифрованного текста. Функция шифрования для одной буквы:

где модуль m - размер алфавита, а a и b - ключи шифра. Значение a должно быть выбрано таким, чтобы a и m были взаимно просты . Функция дешифрования

где -1 является модульным мультипликативным обратным из более по модулю т . Т.е. он удовлетворяет уравнению

Мультипликативный обратный к a существует, только если a и m взаимно просты. Следовательно, без ограничения a расшифровка может быть невозможна. Можно показать следующим образом, что функция дешифрования является обратной функцией шифрования,

D ( E ( Икс ) ) знак равно а - 1 ( E ( Икс ) - б ) мод м знак равно а - 1 ( ( ( а Икс + б ) мод м ) - б ) мод м знак равно а - 1 ( а Икс + б - б ) мод м знак равно а - 1 а Икс мод м знак равно Икс мод м . D (E (x)) & = a ^ (E (x) -b) > \\ & = a ^ ( ((ax + b) >) - b) > \\ & = a ^ (ax + bb) > \\ & = a ^ ax > \\ & = x >. \ end >>

Недостатки

Поскольку аффинный шифр по-прежнему является моноалфавитным шифром подстановки, он наследует слабые места этого класса шифров. Шифр Цезаря является аффинным шифром с в = 1 , так как функция шифрования просто сводится к линейному смещению. Шифра Atbash использует = -1 .

Тот же тип преобразования, который используется в аффинных шифрах, используется в линейных конгруэнтных генераторах , типе генератора псевдослучайных чисел . Этот генератор не является криптографически безопасным генератором псевдослучайных чисел по той же причине, по которой небезопасен аффинный шифр.

Примеры

В этих двух примерах, один для шифрования и один для дешифрования, алфавит будет состоять из букв от A до Z и будет иметь соответствующие значения, указанные в следующей таблице.

А B C D E F грамм ЧАС я J K L M N О п Q р S Т U V W Икс Y Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 год 22 23 24 25

Шифрование

простой текст А F F я N E C я п ЧАС E р
Икс 0 5 5 8 13 4 2 8 15 7 4 17

Теперь возьмите каждое значение x и решите первую часть уравнения (5 x + 8) . Найдя значение (5 x + 8) для каждого символа, возьмите остаток при делении результата (5 x + 8) на 26. В следующей таблице показаны первые четыре шага процесса шифрования.

простой текст А F F я N E C я п ЧАС E р
Икс 0 5 5 8 13 4 2 8 15 7 4 17
(5 х + 8) 8 33 33 48 73 28 год 18 48 83 43 год 28 год 93
(5 х + 8) мод 26 8 7 7 22 21 год 2 18 22 5 17 2 15

простой текст А F F я N E C я п ЧАС E р
Икс 0 5 5 8 13 4 2 8 15 7 4 17
(5 х + 8) 8 33 33 48 73 28 год 18 48 83 43 год 28 год 93
(5 х + 8) мод 26 8 7 7 22 21 год 2 18 22 5 17 2 15
зашифрованный текст я ЧАС ЧАС W V C S W F р C п

Расшифровка

В этом примере расшифровки зашифрованный текст, который будет расшифрован, является зашифрованным текстом из примера шифрования. Соответствующая функция дешифрования: D ( y ) = 21 ( y - 8) mod 26 , где a −1 вычисляется как 21, а b равно 8. Для начала напишите числовые эквиваленты каждой буквы в зашифрованном тексте, как показано в таблице ниже.

зашифрованный текст я ЧАС ЧАС W V C S W F р C п
у 8 7 7 22 21 год 2 18 22 5 17 2 15

Теперь следующим шагом является вычисление 21 ( y - 8) , а затем получение остатка от деления этого результата на 26. В следующей таблице показаны результаты обоих вычислений.

зашифрованный текст я ЧАС ЧАС W V C S W F р C п
у 8 7 7 22 21 год 2 18 22 5 17 2 15
21 ( г - 8) 0 −21 −21 294 273 −126 210 294 −63 189 −126 147
21 ( у - 8) мод 26 0 5 5 8 13 4 2 8 15 7 4 17

Последним шагом в расшифровке зашифрованного текста является использование таблицы для преобразования числовых значений обратно в буквы. Открытый текст в этой дешифровке - AFFINECIPHER. Ниже приведена таблица с завершенным последним этапом.

зашифрованный текст я ЧАС ЧАС W V C S W F р C п
у 8 7 7 22 21 год 2 18 22 5 17 2 15
21 ( г - 8) 0 −21 −21 294 273 −126 210 294 −63 189 −126 147
21 ( у - 8) мод 26 0 5 5 8 13 4 2 8 15 7 4 17
простой текст А F F я N E C я п ЧАС E р

Закодирован весь алфавит

Чтобы ускорить шифрование и дешифрование, можно зашифровать весь алфавит, чтобы создать взаимно однозначную карту между буквами открытого текста и зашифрованного текста. В этом примере взаимно однозначная карта будет следующей:

письмо в открытом виде А B C D E F грамм ЧАС я J K L M N О п Q р S Т U V W Икс Y Z
число в открытом тексте 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 год 22 23 24 25
(5 х + 8) мод 26 8 13 18 23 2 7 12 17 22 1 6 11 16 21 год 0 5 10 15 20 25 4 9 14 19 24 3
письмо с зашифрованным текстом я N S Икс C ЧАС M р W B грамм L Q V А F K п U Z E J О Т Y D

Примеры программирования

Следующий код Python можно использовать для шифрования текста аффинным шифром:

Аффинный шифр - это частный случай более общего моноалфавитного шифра подстановки. К шифрам подстановки относятся также шифр Цезаря, ROT13 и Атбаш. Поскольку аффинный шифр легко дешифровать, он обладает слабыми криптографическими свойствами.
В аффинном шифре каждой букве алфавита размера m ставится в соответствие число из диапазона 0..m-1. Затем при помощи модульной арифметики для каждого числа, соответствующего букве исходного алфавита, вычисляется новое число, которое заменит старое в шифротексте. Функция шифрования для каждой буквы:

где модуль m - размер алфавита, а пара a и b - ключ шифра. Значение a должно быть выбрано таким, что a и m - взаимно простые числа. Функция расшифрования:

где a-1 обратное к а число по модулю m. То есть оно удовлетворяет уравнению:

Обратное к а число существует только в том случае, когда а и m - взаимно простые.

Код
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|2 9|30|31|32|
| а| б| в| г| д| е| ё| ж| з| и| й| к| л| м| н| о| п| р| с| т| у| ф| х| ц| ч| ш| щ| ъ| ы| ь| э| ю| я|
m=33 a=5 b=3 E=(5x+3) mod 33

Код
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30| 31| 32|
| а| б| в| г| д| е| ё| ж| з| и| й| к| л| м| н| о| п| р| с| т| у| ф| х| ц| ч| ш| щ| ъ| ы| ь| э| ю| я|
| 3| 8| 13| 18| 23| 28| 33| 38| 43| 48| 53| 58| 63| 68| 73| 78| 83| 88| 93| 98|103|108|113|118|123|128|133|138|143|148|153|158|163|
Код
| 0| 1| 2| 3| 4| 5| 6| 7| 8| 9| 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 20| 21| 22| 23| 24| 25| 26| 27| 28| 29| 30| 31| 32|
| а| б| в| г| д| е| ё| ж| з| и| й| к| л| м| н| о| п| р| с| т| у| ф| х| ц| ч| ш| щ| ъ| ы| ь| э| ю| я|
| 3| 8| 13| 18| 23| 28| 33| 38| 43| 48| 53| 58| 63| 68| 73| 78| 83| 88| 93| 98|103|108|113|118|123|128|133|138|143|148|153|158|163|
| | | | | | | 0| 5| 10| 15| 20| 25| 30| 35| 40| 45| 50| 55| 60| 65| 70| 75| 80| 85| 90| 95|100|105|110|115|120|125|130|
| | | | | | | | | | | | | | 2| 7| 12| 17| 22| 27| 32| 37| 42| 47| 52| 57| 62| 67| 72| 77| 82| 87| 92| 97|
| | | | | | | | | | | | | | | | | | | | | 4| 9| 14| 19| 24| 29| 34| 39| 44| 49| 54| 59| 64|
| | | | | | | | | | | | | | | | | | | | | | | | | | | 1| 6| 11| 16| 21| 26| 31|
в п е р ё д
2 16 5 17 6 4
м р ы х а ц
13 17 28 22 0 23

D(x)=a-1(x-b) mod m,
1=aa-1 mod m.
5a-1≡1(mod 33)
a-1≡20
D=20(x-3) mod 33

20*10mod 33 = 2 в
20*14mod 33 = 16 п
20*25mod 33 = 5 е
20*19mod 33 = 17 р
20*(-3)mod 33 = 6 ё
20*20mod 33 = 4 д

Первым предварительным условием для решения аффинного шифрования является понимание трех важных формул, приведенных выше, и того, чтоОтносительно простой,чтоМультипликативный обратный, Пожалуйста, прочтите внимательноАффинное шифрование


И хорошо подумайте о части примера

Когда вы действительно понимаете принцип шифрования, гораздо проще написать код Python для шифрования и дешифрования:
Код ниже:

Интеллектуальная рекомендация


Тема ------ Thread Dead Block Причина, метод Discovery Line Dead Lock, как избежать резьбы мертвого блокировки

Мертвый замок: невозможно продвинуться, если два или более потоков находятся в процессе выполнения, и нет внешней силы из-за конкурентных ресурсов или вызванных связью друг с другом. В это время систе.


CSS --- Настройки стиля полосы прокрутки


Используйте pip install в блокноте Jupyter для установки сторонних пакетов Python (возьмите в качестве примера matplotlib)

В одном предложении дается краткое описание установки ноутбука Jupyter (подходит для более озабоченных читателей) Как использовать: вpip install -[Package]Добавить один перед!Просто, например, если вы.


Читайте также: