T

Text Machine

Мощные текстовые инструменты прямо в браузере

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

Шифруйте и расшифровывайте аффинный шифр по формуле E(x) = (a·x + b) mod 26. Меняйте множитель a и сдвиг b по шагам, наблюдайте, как обновляются алфавит замены и формула в реальном времени, и копируйте, скачивайте или делитесь результатом. Всё работает конфиденциально прямо в вашем браузере.

Ключи шифра

Множитель a

5

Сдвиг b

8

E(x) = (5x + 8) mod 26

Множитель a должен быть взаимно простым с 26, поэтому допустимы только двенадцать значений: 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 и 25. Сдвиг b может быть любым числом от 0 до 25.

Открытый текст
Шифртекст

Введите текст выше, чтобы увидеть здесь результат.

Алфавит замены

Текст

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z

Шифр

I
N
S
X
C
H
M
R
W
B
G
L
Q
V
A
F
K
P
U
Z
E
J
O
T
Y
D

Как пользоваться Аффинный шифр

  1. 1

    Выберите шифрование или дешифрование

    Выберите «Зашифровать», чтобы превратить открытый текст в аффинный шифртекст, или «Расшифровать», чтобы вернуть шифртекст в читаемый текст с теми же двумя ключами.

  2. 2

    Задайте множитель a

    Перебирайте множитель a по его двенадцати допустимым значениям. Предлагаются только числа, взаимно простые с 26, поэтому шифр всегда можно обратить.

  3. 3

    Задайте сдвиг b

    Перебирайте сдвиг b до любого значения от 0 до 25. Формула в реальном времени и таблица алфавита замены обновляются в тот же миг, как вы его меняете.

  4. 4

    Введите или вставьте текст

    Введите своё сообщение, и шифр срабатывает по мере набора. Буквы шифруются, а пробелы, цифры и знаки препинания проходят без изменений, и регистр сохраняется.

  5. 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.

Часто задаваемые вопросы

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

Похожие инструменты

Продолжайте работу с этими удобными инструментами

Шифр Цезаря

Шифр Виженера

Шифр Атбаш

Шифр Рейл-Фенс

Шифр Плейфера

Шифр Бэкона