Чёрный кабинет EN

Утилиты · Классические шифры

Аффинный шифр

Аффинный шифр E(x) = a·x + b: шифрование, расшифровка и перебор всех ключей.

Считается в вашем браузере. Текст никуда не отправляется.

Как пользоваться

Выберите множитель a и сдвиг b — текст зашифруется сразу. Пронумеруем буквы с нуля: А = 0, Б = 1, … Я = 32. Каждая буква x превращается в (a·x + b) по модулю 33, то есть в остаток от деления на число букв. Полоса над полем показывает, куда уходит каждая буква. Кнопка «⇅» меняет поля местами и переключает режим.

Алфавит определяется по тексту: русский (33 буквы, с ё) или латинский (26). Регистр сохраняется, остальные символы не меняются.

Почему подходит не любое a

Чтобы шифр можно было расшифровать, разные буквы должны превращаться в разные. Это выполняется, только если у a и числа букв нет общих делителей, кроме единицы. Для латиницы (26 = 2 · 13) запрещены все чётные a и 13 — остаётся 12 вариантов. Для русского алфавита (33 = 3 · 11) запрещены числа, кратные 3 и 11, — остаётся 20. Утилита показывает только подходящие.

Для расшифровки нужно число a⁻¹ — обратное к a: такое, что a · a⁻¹ даёт остаток 1. Тогда D(y) = a⁻¹ · (y − b). Формула под кнопками показывает это число и проверку.

Взлом перебором

Ключей у аффинного шифра немного: 12 × 26 = 312 для латиницы и 20 × 33 = 660 для русского. Блок «Взлом перебором» пробует их все и сортирует по χ² — мере того, насколько частоты букв похожи на язык. Для фразы из нескольких слов верный ключ почти всегда оказывается первым. Нажмите строку, чтобы взять этот ключ.

Частые вопросы

Как аффинный шифр связан с Цезарем и Атбашем?

При a = 1 это шифр Цезаря со сдвигом b. При a = b = N − 1 (N — число букв) — Атбаш. Оба — частные случаи аффинного шифра, а сам он — частный случай простой замены.

Почему a = 1 и a = N − 1 есть в списке?

Они тоже взаимно просты с N. Это законные, просто очень слабые ключи.

Безопасно ли вводить сюда текст?

Да. Всё считается в вашем браузере, на сервер ничего не отправляется.