Шифр Виженера: шифрование, расшифровка и взлом
Зашифруйте или расшифруйте текст шифром Виженера с ключевым словом на русском или латинском алфавите и посмотрите пошаговую таблицу замены. Режим взлома найдёт длину ключа по индексу совпадений и восстановит сам ключ частотным анализом — без знания ключа.
Индекс совпадений для разных длин ключа
Пошаговая замена
Как работает шифр Виженера
Шифр Виженера — многоалфавитный шифр замены. Под текстом многократно подписывают ключевое слово, и каждая буква сдвигается на номер стоящей под ней буквы ключа (А — сдвиг 0, Б — 1 и так далее):
Ci = (Pi + Ki mod m) mod n; Pi = (Ci − Ki mod m) mod n
где m — длина ключа, n — число букв алфавита. Пробелы и знаки препинания не шифруются и не расходуют буквы ключа. Фактически это m шифров Цезаря, которые чередуются от буквы к букве.
Пример
Зашифруем слово «шифр» ключом «ключ» (алфавит из 33 букв): Ш + К = Ш(25) + 11 = 36 mod 33 = 3 → Г; И + Л = 9 + 12 = 21 → Ф; Ф + Ю = 21 + 31 = 52 mod 33 = 19 → Т; Р + Ч = 17 + 24 = 41 mod 33 = 8 → З. Шифротекст — «гфтз». Номера букв здесь считаются с нуля.
Как взламывают шифр Виженера
Три века шифр считался «неразгаданным», пока в XIX веке Чарльз Бэббидж и Фридрих Касиски не нашли способ его вскрыть. Слабость — повторение ключа.
- Длина ключа. Если разбить шифротекст на m столбцов (каждая m-я буква), то при правильной длине ключа каждый столбец зашифрован одним сдвигом и сохраняет статистику языка. Это видно по индексу совпадений — вероятности того, что две случайные буквы совпадут: для русского текста он около 0,055, для случайных букв — 1/33 ≈ 0,030.
- Буквы ключа. Каждый столбец — это шифр Цезаря. Для него перебирают все сдвиги и выбирают тот, при котором частоты букв ближе всего к языковым (минимум χ²).
Чем длиннее текст и короче ключ, тем надёжнее взлом. Если ключ так же длинен, как сам текст, случаен и используется один раз, получается одноразовый блокнот (шифр Вернама) — его взломать невозможно.
Комментарии и вопросы