Математики, шпионы и хакеры. Кодирование и криптография | страница 16
,
где n — длина алфавита (26 в английском алфавите), a k — ключ, используемый в данном шифре.
Расшифровка такого сообщения включает в себя расчеты, обратные тем, что использовались для шифрования. В нашем примере расшифровка означает применение формулы, обратной той, что использовалась выше:
С>-1(х) = (х — k) (mod n).
В случае сообщения SODB, зашифрованного шифром Цезаря с ключом 3 с применением английского алфавита, то есть k = 3 и n = 26, мы получим:
С>-1(х) = (х — 3) (mod 26).
Применим эту формулу следующим образом:
Для S: х = 18, С>-1(18) = 18 — 3
Для О: х = 14, С>-1(14) = 14 — 3
Для D: х = 3, С>-1(3) = 3–3
Для В: x = 1, С>-1(1) = 1–3 = —2 + 26
Сообщение SODB, зашифрованное шифром Цезаря с ключом 3, соответствует, как мы уже знаем, оригинальному тексту PLAY.
В заключении нашего первого знакомства с математикой криптографии мы рассмотрим новое преобразование, известное как аффинный шифр, частным случаемкоторого является шифр Цезаря. Оно определяется следующим образом:
С>(a,Ь)(x) = (а∙х + b) (mod n),
где а и b — два целых числа, меньших, чем число (n) букв в алфавите. Наибольший общий делитель (НОД) чисел а и n должен быть равен 1 [НОД (а, n) = 1], потому что иначе, как мы увидим позже, получится несколько возможностей для шифрования одной и той же буквы. Ключ шифра определяется парой (а, Ь). Шифр Цезаря с ключом 3 является, следовательно, аффинным шифром со значениями
а = 1 и b = 3.
Обобщенный аффинный шифр имеет более высокий уровень безопасности, чем обычный шифр Цезаря. Почему? Как мы видели, ключом аффинного шифра является пара чисел (а, b). Если сообщение написано с использованием алфавита из 26 букв и зашифровано с помощью аффинного шифра, то и а, и b могут принимать любые значения от 0 до 25. Таким образом, в этой системе шифрования с алфавитом из 26 букв возможное количество ключей составит 25 х 25 = 625. Заметим, что количество ключей для алфавита из n букв в n раз больше, чем в шифре Цезаря.
Это значительное улучшение, но аффинный шифр все еще возможно расшифровать методом перебора всех возможных вариантов.
* * *
НАИБОЛЬШИЙ ОБЩИЙ ДЕЛИТЕЛЬ (НОД)
Наибольший общий делитель двух чисел может быть найден с помощью алгоритма Евклида. Этот алгоритм заключается в делении одного числа на другое, а затем проведении последовательных делений предыдущего делителя на новый остаток. Процесс заканчивается, когда остаток равен 0. Делитель последней операции деления и будет наибольшим общим делителем данных чисел.