Как устроен алгоритм Виженера
Шифр Виженера меняет шаг смещения для каждого отдельного символа на основе кодового слова. В отличие от простых подстановок, здесь одна и та же буква открытого текста при повторении превращается в разные символы шифротекста.
Отличие от шифра Цезаря
В нашем калькуляторе шифра Цезаря смещение задается одной фиксированной цифрой: весь текст двигается по алфавиту вперед на одинаковое расстояние. Из-за этого Цезарь взламывается за пару секунд простым перебором 33 вариантов сдвига.
Виженер берет буквы секретного слова и превращает их в цепочку разных сдвигов.
Разберем пример: шифруем слово «ТЕКСТ» ключом «КОД».
- Букву «Т» сдвигаем на порядковый номер буквы «К».
- Букву «Е» сдвигаем на номер буквы «О».
- Букву «К» сдвигаем на номер буквы «Д».
- Слово «КОД» закончилось, поэтому возвращаемся в начало: букву «С» сдвигаем на шаг буквы «К».
- Букву «Т» сдвигаем на шаг буквы «О».
Первая буква «Т» и последняя буква «Т» в итоге станут разными символами шифра, потому что попали на разные буквы пароля.
Формула расчета
Программа вычисляет индекс каждого символа через деление с остатком:
Расшифровка: P = (C — K + N) mod N
Параметры вычислений:
- P: номер буквы открытого текста в алфавите (отсчет идет с нуля).
- K: номер соответствующей буквы пароля.
- C: номер полученного зашифрованного символа.
- N: размер алфавита. Для русского языка это 33 символа, для английского: 26.
При расшифровке скрипт вычитает индекс ключа из шифротекста. Если число уходит в минус, к результату добавляется длина алфавита N.
Как скрипт на 24calc обрабатывает текст
В онлайн калькуляторе заложены три технических правила:
- Буква «Ё» включена в русский алфавит. Буква стоит на седьмой позиции, как положено по правилам языка. Скрипт рассчитывает модуль ровно на 33 буквы, поэтому исходные слова не искажаются.
- Знаки и пробелы остаются на местах. Запятые, точки, пробелы, цифры и переносы строк не кодируются и не тратят шаг пароля. Ключ расходуется строго на буквы.
- Русский и английский текст разделены. Русские фразы шифруются кириллическими символами ключа, латиница: английскими.
Другие инструменты для работы с кодом
Если вам нужно не текстовое шифрование, а преобразование байтов и машинных данных, используйте смежные сервисы:
- Переводчик в двоичный код: перевод строк в нули и единицы по таблицам UTF-8 и Windows-1251.
- Калькулятор систем счисления: перевод чисел между 2, 8, 10 и 16-ричными системами с примерами деления в столбик.
- Конвертер Base64: безопасное кодирование текста и файлов для вставки в код страниц.
Как взламывают шифр Виженера
Долгое время алгоритм считался не поддающимся взлому. В 1863 году майор прусской армии Фридрих Касиски опубликовал методику его дешифровки без знания пароля.
Принцип теста Касиски: в длинном шифротексте ищут одинаковые группы из 3-4 букв. Из-за циклического повторения пароля частые сочетания вроде «про», «сто» или «под» периодически шифруются одними и теми же буквами ключа. Взломщик считает расстояние между этими повторами и находит наибольший общий делитель. Полученное число указывает на точную длину секретного слова.
Как только длина пароля известна (допустим, 5 букв), задача распадается на 5 отдельных шифров Цезаря. Дальше текст вскрывается базовым подсчетом частоты гласных букв.
Частые вопросы
Сколько букв в русском алфавите считает калькулятор?
Ровно 33 буквы. Буква «Ё» находится на штатном седьмом месте, что исключает сдвиги при расшифровке.
Тратят ли пробелы и точки буквы ключа?
Нет. Все спецсимволы, знаки препинания и пробелы просто переносятся в итоговое поле. Буква ключа переходит только к следующей букве текста.
Что происходит, когда пароль короче текста?
Скрипт автоматически начинает читать пароль заново с первой буквы и повторяет этот цикл до конца текста.
Сохраняется ли регистр символов?
Да. Заглавные буквы шифруются в заглавные, строчные остаются строчными.