Аффинный шифр
Шифруйте и расшифровывайте аффинный шифр по формуле E(x) = (a·x + b) mod 26. Меняйте множитель a и сдвиг b по шагам, наблюдайте, как обновляются алфавит замены и формула в реальном времени, и копируйте, скачивайте или делитесь результатом. Всё работает конфиденциально прямо в вашем браузере.
Множитель a
Сдвиг b
E(x) = (5x + 8) mod 26
Множитель a должен быть взаимно простым с 26, поэтому допустимы только двенадцать значений: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25. Сдвиг b может быть любым числом от 0 до 25.
Введите текст выше, чтобы увидеть здесь результат.
Алфавит замены
Текст
Шифр
Как пользоваться Аффинный шифр
- 1
Выберите шифрование или дешифрование
Выберите «Зашифровать», чтобы превратить открытый текст в аффинный шифртекст, или «Расшифровать», чтобы вернуть шифртекст в читаемый текст с теми же двумя ключами.
- 2
Задайте множитель a
Перебирайте множитель a по его двенадцати допустимым значениям. Предлагаются только числа, взаимно простые с 26, поэтому шифр всегда можно обратить.
- 3
Задайте сдвиг b
Перебирайте сдвиг b до любого значения от 0 до 25. Формула в реальном времени и таблица алфавита замены обновляются в тот же миг, как вы его меняете.
- 4
Введите или вставьте текст
Введите своё сообщение, и шифр срабатывает по мере набора. Буквы шифруются, а пробелы, цифры и знаки препинания проходят без изменений, и регистр сохраняется.
- 5
Скопируйте, скачайте или поделитесь
Скопируйте результат, скачайте его в виде текстового файла или поделитесь ссылкой, которая снова откроет инструмент с вашими точными ключами, текстом и направлением, готовыми к работе.
Как устроен аффинный шифр
Что такое аффинный шифр?
Аффинный шифр — это моноалфавитный шифр замены, построенный на простой модульной арифметике. Каждая буква превращается в число, от A = 0 до Z = 25, прогоняется через линейную функцию E(x) = (a·x + b) mod 26 и снова превращается в букву. Два числа a и b — это ключ: a — множитель, а b — сдвиг. Поскольку одна и та же буква всегда отображается в одну и ту же букву шифра, аффинный шифр принадлежит к тому же семейству, что и шифры Цезаря и Атбаш, но его шаг «умножить, а затем сдвинуть» делает его более общим, чем каждый из них.
Название происходит от аффинной функции a·x + b — сочетания умножения и сложения, которое придаёт шифру его структуру. Это один из самых популярных шифров для обучения математике, лежащей в основе криптографии, потому что он показывает, как модульная арифметика, взаимно простые числа и обратные элементы по модулю соединяются в работающем коде. Он также частый гость головоломок, квестов и соревнований по захвату флага, где его маленькое пространство ключей делает приятным взлом вручную.
Формула аффинного шифрования
Чтобы зашифровать, каждая буква переводится в свою позицию в алфавите, с A = 0, B = 1 и так далее до Z = 25. Это число x подаётся в формулу E(x) = (a·x + b) mod 26: умножьте на a, прибавьте b и возьмите остаток после деления на 26, чтобы результат вернулся в диапазон от 0 до 25. Превращение этого числа обратно в букву даёт шифртекст. Умножение на a растягивает и перемешивает алфавит, тогда как прибавление b сдвигает его, а mod 26 удерживает всё внутри кольца из 26 букв.
Инструмент выше показывает всё отображение с одного взгляда. Таблица алфавита замены перечисляет каждую открытую букву A–Z с буквой шифра, в которую она превращается при ваших текущих a и b, и обновляется в тот же миг, как вы меняете любой из ключей. Регистр букв сохраняется, а всё, что не является буквой — пробелы, цифры, знаки препинания, эмодзи — проходит насквозь без изменений, поэтому очертания вашего сообщения остаются читаемыми даже после шифрования.
Выбор ключей a и b
Со сдвигом b всё просто: это может быть любое целое число от 0 до 25. Множитель a — самый интересный, потому что не каждое значение подходит. Чтобы шифр был обратимым, a должен быть взаимно простым с 26, то есть не иметь с 26 ни одного общего делителя, кроме 1. Поскольку 26 = 2 × 13, любое чётное число и любое кратное 13 исключаются, и остаётся ровно двенадцать пригодных значений: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25.
Если a имеет общий делитель с 26 — скажем, a = 2 — то несколько разных открытых букв сталкиваются в одной и той же букве шифра, и сообщение больше нельзя расшифровать однозначно. Вот почему элемент управления множителем выше перебирает только двенадцать допустимых значений: выбрать ключ, который нельзя обратить, невозможно. С двенадцатью вариантами для a и двадцатью шестью для b всего получается 312 возможных сочетаний ключей, одно из которых, a = 1 и b = 0, оставляет текст без изменений.
Разбор примера аффинного шифра
Возьмём ключи a = 5 и b = 8 и зашифруем слово AFFINECIPHER. Первая буква A — это 0, поэтому E(0) = (5·0 + 8) mod 26 = 8, то есть I. Следующая буква F — это 5, поэтому E(5) = (5·5 + 8) mod 26 = 33 mod 26 = 7, то есть H. Продолжая буква за буквой через всё слово, получаем шифртекст IHHWVCSWFRCP.
Вы можете проследить каждый шаг по таблице алфавита замены выше: установите a равным 5 и b равным 8, и строка шифра покажет, как A становится I, B становится N, C становится S и так далее по всему алфавиту. Поскольку отображение фиксировано, шифрование одной и той же буквы всегда даёт один и тот же результат — обе буквы F в AFFINE становятся H — и это ровно то свойство, которое позволяет атакующему применять против него частотный анализ.
Расшифровка аффинного шифра
Расшифровка прогоняет формулу в обратную сторону через D(y) = a⁻¹·(y − b) mod 26. Новый ингредиент — это a⁻¹, обратный элемент к a по модулю: число, которое при умножении на a даёт 1 mod 26. Для a = 5 обратный элемент равен 21, потому что 5 × 21 = 105 = 4 × 26 + 1. Чтобы расшифровать, вы вычитаете сдвиг b, умножаете на этот обратный элемент и берёте результат mod 26. Возвращая пример назад, буква шифра I — это 8, и D(8) = 21·(8 − 8) mod 26 = 0, то есть снова A.
Вам никогда не придётся вычислять обратный элемент самостоятельно. Выберите «Расшифровать» выше, введите те же a и b, которыми шифровали, и вставьте шифртекст — инструмент находит обратный элемент по модулю и мгновенно восстанавливает сообщение. Поскольку аффинный шифр — это чистое взаимно однозначное отображение, расшифровка возвращает ваш исходный текст в точности, со всеми его пробелами, прописными буквами и знаками препинания на месте.
Шифры Цезаря и Атбаш как частные случаи
Аффинный шифр незаметно содержит в себе два из самых знаменитых классических шифров. Установите множитель a равным 1, и формула сворачивается до E(x) = (x + b) mod 26 — это в точности шифр Цезаря, чистый сдвиг каждой буквы на b позиций. При a = 1 и b = 3 вы получаете тот самый классический сдвиг, которым, как говорят, пользовался Юлий Цезарь, превращая A into D и HELLO в KHOOR.
Установите a = 25 и b = 25, и появляется кое-что не менее знакомое. Поскольку 25 равно −1 mod 26, формула становится E(x) = (25 − x) mod 26, которая разворачивает алфавит так, что A becomes Z, B becomes Y и так далее. Это шифр Атбаш, которым тысячи лет назад пользовались еврейские писцы. Увидеть, как оба шифра выпадают из одной формулы, — самый наглядный способ понять, как аффинный шифр их обобщает: попробуйте каждую настройку выше и посмотрите, как таблица замены это подтверждает.
Насколько надёжен аффинный шифр?
По любым современным меркам аффинный шифр не даёт никакой реальной защиты. Имея всего 312 возможных ключей — и ещё меньше тех, что действительно перемешивают текст — компьютер может перебрать все за долю секунды, и даже терпеливый человек способен взломать его перебором вручную. В двух маленьких числах просто недостаточно секретной информации, чтобы устоять перед атакой.
Он также уязвим для частотного анализа, потому что он моноалфавитный: каждая буква всегда отображается в одну и ту же букву шифра, поэтому самая частая буква шифртекста с большой вероятностью обозначает E, самую частую букву в английском языке. Атакующий, способный угадать или узнать всего две пары «открытая буква — буква шифра», может даже напрямую найти a и b с помощью небольшой алгебры. Ничего из этого не является недостатком, который надо устранять, — именно это и делает аффинный шифр таким хорошим учебным инструментом, — но для защиты реальной информации вам всегда следует использовать современный, прошедший экспертную проверку алгоритм, такой как AES.
Часто задаваемые вопросы
Что такое аффинный шифр?
Как работает аффинный шифр?
Какие значения может принимать множитель a?
Что такое ключи a и b в аффинном шифре?
Как расшифровать аффинный шифр?
Можете показать разбор примера аффинного шифра?
Как аффинный шифр связан с шифром Цезаря?
Как аффинный шифр связан с шифром Атбаш?
Сколько всего возможных ключей у аффинного шифра?
Как взломать аффинный шифр?
Сохраняет ли аффинный шифр пробелы, цифры и знаки препинания?
Загружается ли мой текст на сервер?
Похожие инструменты
Продолжайте работу с этими удобными инструментами