Шифр Цезаря был назван в честь Юлия Цезаря (100–44 гг. до н. э.), который использовал его для секретной военной связи. Шифр Цезаря – это шифр замены. Юлий Цезарь первоначально использовал сдвиг в три раза для шифрования и дешифрования сообщений. Шифрование выполняется с использованием аффинной функции: f(x)=x+b.
Во-первых, каждый символ исходного текста (сообщения, которое нужно зашифровать) преобразуется в число от 0 до 25, соответствующее его положению в латинском алфавите, содержащем 26 букв --> (a = 0, b = 1...z = 25).
Затем каждое полученное число преобразуется аффинной функцией (f(x) = 1x + b). «x» представляет число, а «b» определяется во время шифрования. «b» — это ключ, используемый для расшифровки окончательного сообщения.
Если мы возьмем все изображения и поместим их в список, мы получим n чисел, соответствующих n символам исходного текста. Следующий шаг заключается в нахождении значений по модулю 26 каждого числа. ( по модулю означает остаток )
Пример: по модулю 4 от 19 равно 3 , потому что
19 = 4 * 4 + 3
С другой стороны, по модулю 26 от 26 равно 0 , потому что26 = 26 * 1 + 0
Таким образом, мы получаем новый список с n элементами, каждый из которых находится в диапазоне от 0 до 25. Все эти цифры преобразуются в буквы латинского алфавита с помощью таблиц ниже.
Наконец, мы создаем окончательное сообщение, складывая все буквы рядом.
Шаги 1 и 4 можно выполнить с помощью этих таблиц:
А | Б | С | Д | Э | Ф | Г | ЧАС | я | Дж | К | л | М | Н | О | П | вопрос | Р | С | Т | ты | В | Вт | Х | Да | З |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Если злоумышленник знает, что сообщение было зашифровано с использованием шифра Цезаря, он может попробовать все сдвиги (значения b от 1 до 25), чтобы расшифровать сообщение. Это называется методом грубой силы .
Мы также можем использовать частотный анализ для расшифровки сообщения, поскольку каждая буква шифруется одним и тем же алгоритмом, а наиболее распространенные буквы в английском языке:
Используя приведенные выше таблицы, АТАКУ можно записать как: 25 0 19 19 0 2 10 25 Изображения каждого числа:
Новый список: 29 4 23 23 4 6 14 29.
Используя метод по модулю 26 , получаем:
Окончательное сообщение — 3 4 23 23 4 6 14 3 , и снова используя таблицы, мы преобразуем их в зашифрованное сообщение:
DEXXEGOD
ZATTACKZ шифруется функцией x + 4 и становится DEXXEGOD .
Используя приведенные выше таблицы, DEXXEGOD можно записать как: 3 4 23 23 4 6 14 3 Изображения каждого числа:
Новый список: -1 0 19 19 0 2 10 -1.
Используя метод по модулю 26 , получаем:
Окончательное сообщение — 25 0 19 19 0 2 10 25 , и снова используя таблицы, мы преобразуем их в зашифрованное сообщение:
ЗАТТАКЗ
DEXXEGOD расшифровывается функцией 1x-4 и становится ZATTACKZ .
Это называется метод грубой силы.
Используя приведенные выше таблицы, DEXXEGOD можно записать как: 3 4 23 23 4 6 14 3
a — число от 0 до 25. (a = 0 означает, что сообщение уже расшифровано)
Используя функцию f(x) = Mod(1x + a, 26):
Мы можем получить все эти результаты:
а | Расшифрованный текст |
---|---|
1 | fgzzgiqf |
2 | гхаахджрг |
3 | Хиббикш |
4 | ijccjlti |
5 | jkddkmuj |
6 | клелинвк |
7 | лмфмоул |
8 | mnggnpxm |
9 | Ноххокин |
10 | опиипрзо |
11 | pqjjqsap |
12 | qrkkrtbq |
13 | rsllsucr |
14 | stmmtvds |
15 | туннувет |
16 | увоовксфу |
17 | vwppwygv |
18 | wxqqxzhw |
19 | ксиррие |
20 | yzsszbjy |
21 | Заттакз |
22 | абуубдла |
23 | bcvvcemb |
24 | cdwwdfnc |
25 | dexxegod |
Единственный текст, который имеет смысл, — это zattackz, поэтому мы можем сделать вывод, что ключ — 21 (25 — b = 21).
DEXXEGOD расшифровывается функцией f(x) = 1x - 4 или f(x) = 1x + 21 и становится ZATTACKZ .
Язык | Шифровать | Расшифровать |
---|---|---|
С | Цезарь.с | Вскоре |
С# | Цезарь.cs | Вскоре |
С++ | main.cpp | main.cpp |
JavaScript | шифровать.js | расшифровать.js |
Питон | шифровать.py | расшифровать.py |
Быстрый | lib.swift | lib.swift |
npm i @cryptoolsorg/caesarcipher