Шифр Хилла
Шифруйте и расшифровывайте шифр Хилла — классический полиграфический шифр, построенный на линейной алгебре. Буквы группируются в блоки, превращаются в числовые векторы и умножаются на ключевую матрицу по модулю 26: шифрование — это C = K·P, расшифровка — P = K⁻¹·C. Выберите ключ 2×2 или 3×3, наблюдайте за живой матрицей, её определителем и её модульной обратной матрицей и следите за поблочным разбором. Всё работает в вашем браузере.
Ключ (буквы)
Ключ состоит из 4 букв (A=0 … Z=25), заполняющих матрицу строка за строкой. Ключ 2×2 шифрует буквы парами (диграммами).
Введите текст выше, чтобы увидеть здесь результат.
Ключевая матрица
Каждый блок букв становится вектором (A=0 … Z=25) и умножается на ключевую матрицу по модулю 26. Ключ работает только тогда, когда его определитель обратим по модулю 26.
C = K · P (mod 26)
Введите ровно 4 букв (A–Z), чтобы заполнить ключевую матрицу.
Как пользоваться Шифр Хилла
- 1
Выберите шифрование или расшифровку и размер матрицы
Выберите «Зашифровать», чтобы зашифровать, или «Расшифровать», чтобы расшифровать, затем выберите ключ 2×2 (буквы парами) или ключ 3×3 (буквы тройками).
- 2
Введите ключ буквами
Введите буквы ключа, заполняющие матрицу строка за строкой, — четыре буквы для ключа 2×2, девять для 3×3. Живая матрица показывает определитель и сообщает, обратим ли ключ по модулю 26.
- 3
Введите или вставьте свой текст
Введите своё сообщение, и оно преобразуется по мере набора. Панель разбора показывает каждый блок как вектор, умножение матриц и получившийся блок.
- 4
Проверьте ключевую матрицу и обратную
Откройте панель ключевой матрицы, чтобы увидеть ключ, его определитель и — когда ключ допустим — модульную обратную матрицу, используемую для расшифровки.
- 5
Скопируйте, скачайте или поделитесь
Скопируйте результат, скачайте его в виде текстового файла или поделитесь ссылкой, которая снова откроет инструмент с вашими точными текстом, ключом, размером и направлением, готовыми к работе.
Как устроен шифр Хилла
Что такое шифр Хилла?
Шифр Хилла — это классический полиграфический шифр замены, изобретённый американским математиком Лестером С. Хиллом в 1929 году. Вместо того чтобы заменять по одной букве за раз, он шифрует целый блок букв вместе, рассматривая блок как вектор чисел и умножая его на секретную ключевую матрицу по модулю 26. Это был первый практичный шифр, способный работать более чем с тремя символами одновременно, и он прочно ввёл линейную алгебру в криптографию.
Поскольку каждая выходная буква зависит от каждой входной буквы в её блоке, шифр Хилла скрывает частоты отдельных букв, которые выдают более простые шифры. Ключ 2×2 перемешивает буквы парами, ключ 3×3 — тройками, а матрицы большего размера перемешивают ещё более крупные блоки. Это рассеивание — та же идея, что лежит в основе современных блочных шифров, что делает шифр Хилла любимым учебным примером — хотя, будучи линейным шифром, он легко взламывается при небольшом объёме известного открытого текста.
Как работает шифр Хилла
Сначала превратите буквы в числа: A=0, B=1, и так до Z=25. Ключ — это матрица n×n из таких чисел; здесь вы вводите его как последовательность букв, заполняющую матрицу строка за строкой, поэтому ключу 2×2 нужны четыре буквы, а ключу 3×3 — девять. Открытый текст разбивается на блоки по n букв, каждый из которых записывается как вектор-столбец.
Чтобы зашифровать блок P, вычислите C = K · P (mod 26): умножьте ключевую матрицу на вектор и приведите каждый элемент по модулю 26, затем считайте числа обратно как буквы. Чтобы расшифровать, вам нужна модульная обратная матрица ключа, K⁻¹, и вычисление P = K⁻¹ · C (mod 26). Обратная матрица существует только тогда, когда определитель матрицы обратим по модулю 26 — то есть когда он не имеет общего множителя с 26, — и это самое важное правило при выборе ключа.
Выбор допустимой ключевой матрицы
Не каждая матрица может быть ключом Хилла. Чтобы расшифровка работала, определитель ключа, взятый по модулю 26, должен быть взаимно прост с 26. Поскольку 26 = 2 × 13, определитель должен быть нечётным и не кратным 13; допустимые значения — это двенадцать чисел 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 25. Если определитель чётный или равен 13, модульной обратной матрицы не существует, и шифротекст нельзя однозначно расшифровать.
Инструмент вычисляет определитель за вас и показывает зелёный значок, когда ключ обратим, или красный, когда нет, вместе с обратной матрицей, которую он будет использовать для расшифровки. Если ключ отвергнут, измените букву-другую и наблюдайте, как обновляется определитель, пока он не примет допустимое значение. Эта живая обратная связь превращает в остальном кропотливый труд ручного подбора ключа Хилла в быстрое и наглядное упражнение.
Разобранный пример 2×2
Возьмём ключ DDCF, который заполняет матрицу 2×2 числами 3, 3 в верхней строке и 2, 5 в нижней строке. Его определитель равен 3×5 − 3×2 = 9, и поскольку 9 взаимно просто с 26, ключ допустим. Теперь зашифруем HELP. Первый блок HE — это вектор (7, 4): умножение даёт (3×7 + 3×4, 2×7 + 5×4) = (33, 34), что приводится по модулю 26 к (7, 8) = HI.
Второй блок LP — это (11, 15), что даёт (3×11 + 3×15, 2×11 + 5×15) = (78, 97) = (0, 19) = AT. Итак, HELP шифруется в HIAT. Чтобы расшифровать, инструмент обращает ключ в (15, 17 / 20, 9) и умножает каждый блок шифра на него, восстанавливая HELP. Введите DDCF в качестве ключа выше, чтобы увидеть, как каждый шаг появляется в панели живого разбора.
Разобранный пример 3×3
Классический пример 3×3 использует ключ GYBNQKURP, который заполняет матрицу числами 6, 24, 1 в первой строке, 13, 16, 10 во второй и 20, 17, 15 в третьей. Шифрование триграммы ACT — вектора (0, 2, 19) — даёт (67, 222, 319) до приведения, что становится (15, 14, 7) по модулю 26, или POH.
Определитель этой матрицы равен 25 по модулю 26, что взаимно просто с 26, поэтому это допустимый ключ, а его модульная обратная матрица — это (8, 5, 10 / 21, 8, 21 / 21, 12, 8). Умножение блока шифра POH на эту обратную матрицу возвращает ACT. Переключите селектор размера на 3×3 и введите GYBNQKURP, чтобы воспроизвести этот учебный пример и увидеть обратную матрицу, которую выводит инструмент.
Дополнение, буквы и форматирование
Шифр Хилла знает только 26 букв A–Z, поэтому пробелы, цифры и знаки препинания удаляются перед шифрованием и не возвращаются при расшифровке. Поскольку сообщение обрабатывается блоками фиксированного размера, открытый текст, длина которого не кратна размеру блока, дополняется буквой X для завершения последнего блока; поэтому расшифрованное сообщение может оканчиваться одной или двумя лишними буквами.
Регистр букв не сохраняется — всё рассматривается как заглавные буквы. Эти ограничения присущи самому классическому шифру, а не данному инструменту, и они отчасти объясняют, почему шифр Хилла, как и его современники, использовался для коротких тактических сообщений, а не для свободно текущего текста. Живой разбор показывает в точности, как ваш текст группируется и дополняется в блоки.
Надёжность и криптоанализ
Сила шифра Хилла является и его роковой слабостью: он линеен. Каждый блок шифра — это фиксированная линейная функция от блока открытого текста, поэтому атакующий, который узнаёт достаточно пар «блок открытого текста — блок шифра», может составить и решить систему линейных уравнений, чтобы напрямую восстановить ключевую матрицу. Для ключа n×n обычно достаточно примерно n известных блоков, из-за чего шифр быстро поддаётся атаке по известному открытому тексту.
Он также не даёт рассеивания между блоками и никакого перемешивания сверх линейной комбинации, поэтому одинаковые блоки открытого текста всегда шифруются в одинаковые блоки шифра. По современным меркам он небезопасен, и вам никогда не следует использовать его для защиты настоящей информации — выберите вместо него проверенный алгоритм, такой как AES. Однако как ясная, наглядная иллюстрация того, как сочетаются матрицы, модульная арифметика и блочное шифрование, шифр Хилла остаётся одним из лучших классических шифров для изучения.
Часто задаваемые вопросы
Что такое шифр Хилла?
Как работает шифр Хилла?
Как выбрать допустимый ключ шифра Хилла?
Можете показать разобранный пример шифра Хилла?
Как расшифровать шифр Хилла?
В чём разница между шифром Хилла 2×2 и 3×3?
Почему мой ключ показывает, что он необратим?
Что происходит с пробелами, цифрами и знаками препинания?
Надёжен ли шифр Хилла?
Кто изобрёл шифр Хилла?
Что такое модульная обратная матрица?
Загружается ли мой текст на сервер?
Похожие инструменты
Продолжайте работу с этими удобными инструментами