Шифр Виженера
Шифр Виженера — метод полиалфавитного шифрования буквенного текста с использованием ключевого слова.
Таблица для расшифровки (мультиязычная):
Таблица Виженера для расшифровки
Как пользоваться таблицей:
- Найдите строку, соответствующую букве ключа
- Найдите столбец, соответствующий букве шифротекста
- На пересечении найдете букву исходного текста
- Для цифр и символов используйте прямое соответствие
В шифре Цезаря каждая буква алфавита сдвигается на несколько позиций; например в шифре Цезаря при сдвиге +3, A стало бы D, B стало бы E и так далее.
Шифр Виженера состоит из последовательности нескольких шифров Цезаря с различными значениями сдвига. Для зашифровывания может использоваться таблица алфавитов, называемая tabula recta или квадрат (таблица) Виженера.
Применительно к латинскому алфавиту таблица Виженера составляется из строк по 26 символов, причём каждая следующая строка сдвигается на несколько позиций.
Таким образом, в таблице получается 26 различных шифров Цезаря. На каждом этапе шифрования используются различные алфавиты, выбираемые в зависимости от символа ключевого слова. Например, предположим, что исходный текст имеет такой вид:
ATTACKATDAWN
Человек, посылающий сообщение, записывает ключевое слово («LEMON») циклически до тех пор, пока его длина не будет соответствовать длине исходного текста:
LEMONLEMONLE
Первый символ исходного текста A зашифрован последовательностью L, которая является первым символом ключа. Первый символ L шифрованного текста находится на пересечении строки L и столбца A в таблице Виженера.
Точно так же для второго символа исходного текста используется второй символ ключа; то есть второй символ шифрованного текста X получается на пересечении строки E и столбца T. Остальная часть исходного текста шифруется подобным способом.
Исходный текст: ATTACKATDAWN Ключ: LEMONLEMONLE Зашифрованный текст: LXFOPVEFRNHR
Расшифровка шифра Виженера
Расшифровывание производится следующим образом: находим в таблице Виженера строку, соответствующую первому символу ключевого слова; в данной строке находим первый символ зашифрованного текста. Столбец, в котором находится данный символ, соответствует первому символу исходного текста.
Следующие символы зашифрованного текста расшифровываются подобным образом.
Если {\displaystyle n} - количество букв в алфавите, {\displaystyle m_{j}}
- буквы открытого текста, {\displaystyle k_{j}}
- буквы ключа, то шифрование Виженера можно записать следующим образом:
{\displaystyle c_{j}=m_{j}+k_{j}{\pmod {n}}}
И расшифровывание:
{\displaystyle m_{j}=c_{j}-k_{j}{\pmod {n}}}
В компьютере такая операция соответствует сложению кодов ASCII символов сообщения и ключа по некоторому модулю. Кажется, что если таблица будет более сложной, чем циклическое смещение строк, то шифр станет надежнее. Это действительно так, если ее менять чаще, например, от слова к слову.
Но составление таких таблиц, представляющих собой латинские квадраты, где любая буква встречается в строке или столбце один раз, трудоемко и его стоит делать лишь на ЭВМ.
Для ручного же многоалфавитного шифра полагаются лишь на длину и сложность ключа, используя приведенную таблицу, которую можно не держать в тайне, а это упрощает шифрование и расшифровывание.
Шифр Виженера
Результат:
Инструкция:
1. Выберите язык текста
2. Выберите режим (шифрование/дешифрование)
3. Введите ключевое слово (только буквы)
4. Введите текст для обработки
5. Нажмите "Выполнить"