XOR-шифр
Введите сообщение и ключ — каждый байт сообщения складывается по XOR со следующим байтом ключа, ключ повторяется по кругу. Тот же ключ, применённый к результату, возвращает сообщение, и кнопка обмена делает это за вас.
Работает в браузере: всё, что вы вводите, никуда не отправляется.
Как пользоваться
- Введите сообщение и выберите его формат: текст, hex или Base64.
- Введите ключ текстом или в hex.
- Выберите, как показать результат. Hex — безопасный вариант по умолчанию.
- Чтобы вернуть исходное, нажмите «Результат во вход»: результат перейдёт во вход, форматы поменяются местами, и с тем же ключом вы увидите оригинал.
Как это работает
Сообщение и ключ переводятся в байты (текст — в UTF-8). Байт i результата — байт i сообщения XOR байт (i mod длина ключа) ключа. Поскольку (m ⊕ k) ⊕ k = m, тот же ключ отменяет операцию.
Пример
Hello XOR ключ key:
| Байт |
H 48 |
e 65 |
l 6c |
l 6c |
o 6f |
| Ключ |
k 6b |
e 65 |
y 79 |
k 6b |
e 65 |
| XOR |
23 |
00 |
15 |
07 |
0a |
Результат — 230015070a в hex и IwAVBwo= в Base64. Обратите внимание на 00: там, где у сообщения и ключа одинаковый символ, получается нулевой байт — это один из признаков, по которым вычисляют повторяющийся ключ.
Форма на этой странице открывается со словом Привет: 6 букв кириллицы — это 12 байт UTF-8, и строка под результатом показывает «Обработано байт: 12».
Советы
- Если нужен случайный ключ длиной с сообщение, воспользуйтесь шифром Вернама (одноразовым блокнотом).
- Ключ в hex позволяет любые значения байтов, а не только печатные символы.
- XOR работает внутри настоящих шифров (потоковых, режимов AES) вместе с неповторяющимся потоком ключа; сам по себе он лишь прячет данные от беглого взгляда.
Частые вопросы
Как работает шифрование XOR?
XOR сравнивает два бита и даёт 1, если они разные. XOR байта с байтом ключа переворачивает биты там, где в ключе единицы; повторный XOR с тем же ключом возвращает их обратно. Поэтому одна операция и шифрует, и расшифровывает.
Надёжен ли XOR с повторяющимся ключом?
Нет. Короткий повторяющийся ключ легко вскрыть: известный фрагмент текста, повторы и простая статистика его выдают. XOR невзламываем только как одноразовый блокнот — со случайным ключом длиной с сообщение, который никогда не используется повторно.
Почему по умолчанию вывод в hex?
После XOR часто получаются байты, которые не являются печатными символами или корректным UTF-8. Hex и Base64 безопасно показывают любые байты. Вывод текстом работает, когда результат оказывается текстом — например, при расшифровке.
Как расшифровать?
Вставьте зашифрованный hex или Base64 во вход, выберите этот формат, введите тот же ключ и вывод текстом. Кнопка «Результат во вход» переносит результат и меняет форматы местами одним нажатием.
Текст берётся как ASCII или UTF-8?
Как UTF-8. Латинские буквы и цифры — по байту, а кириллица — по два байта на букву, и каждый байт складывается по XOR отдельно.