Как работает шифр Виженера
Под текстом подписывают ключевое слово и повторяют его, пока не закончатся буквы. Каждая буква текста сдвигается по алфавиту на номер буквы ключа под ней: А — сдвиг 0, Б — 1, В — 2 и так далее. Получается шифр Цезаря, у которого сдвиг меняется от буквы к букве.
Расшифровка: Pᵢ = (Cᵢ − Kᵢ) mod n
P — номер буквы текста, K — номер буквы ключа, C — номер буквы шифровки, n — размер алфавита: 33 для русского с Ё, 32 без Ё, 26 для английского. Пробелы, цифры и знаки препинания переносятся как есть и не расходуют ключ.
Пример
Классический пример: ATTACKATDAWN с ключом LEMON
Ключ повторяется: LEMONLEMONLE. Первая буква: A (0) + L (11) = 11 → L. Вторая: T (19) + E (4) = 23 → X. Третья: T (19) + M (12) = 31, по модулю 26 это 5 → F. Вся шифровка: LXFOPVEFRNHR. Одинаковые буквы T и A превращаются в разные — поэтому простой подсчёт частот букв здесь не помогает.
Таблица Виженера
Квадрат Виженера — это алфавит, записанный n раз, каждая следующая строка сдвинута на одну букву. Строка выбирается по букве ключа, столбец — по букве текста. В инструменте выше таблица строится для выбранного алфавита: нажмите на строку разбора, и нужные строка, столбец и их пересечение подсветятся.
Насколько он надёжен
Шифр описал итальянец Джованни Беллазо в 1553 году, а имя он получил по французу Блезу де Виженеру, который опубликовал похожую систему в 1586-м. Три века шифр считали невзламываемым. В 1863 году Фридрих Касиски опубликовал способ вскрытия: повторяющиеся куски шифровки выдают длину ключа, после чего каждая позиция ключа ломается как обычный шифр Цезаря.
Чем длиннее ключ, тем труднее взлом. Если ключ случайный, длиной с сам текст и используется один раз, шифр превращается в шифр Вернама — его невозможно вскрыть даже теоретически. Ещё проще устроен шифр Атбаш: там ключа нет вовсе.