Утилиты · Современная криптография
XOR-шифр онлайн
XOR текста или байтов с ключом: hex, Base64 и текст, поиск однобайтового ключа.
Считается в вашем браузере. Текст никуда не отправляется.
Как пользоваться
Вставьте данные в верхнее поле. Это может быть обычный текст, шестнадцатеричные байты (00 1e 00 25, с пробелами или без, можно с 0x) или Base64. В режиме «Авто» утилита сама определяет формат и пишет под полем, что распознала и сколько получилось байтов. Если угадала неправильно, выберите формат вручную.
Ключ вводится текстом или в hex. Текст переводится в байты UTF-8: латинская буква — один байт, русская — два. Если ключ короче данных, он повторяется по кругу. Результат можно показать текстом, в hex или Base64. Полоска над результатом показывает первые байты: байт данных, байт ключа и то, что вышло после XOR.
XOR обратим: если зашифровать результат тем же ключом ещё раз, вернётся исходник. Кнопка «Результат → на вход» переносит байты наверх, чтобы это проверить.
Атака по известному тексту
Если известно начало сообщения, ключ находится без перебора: шифр ⊕ открытый текст = ключ. Впишите известный кусок, и утилита покажет байты ключа под ним. Повторяющийся ключ выдаёт себя: байты начинают идти по второму кругу, и по этому месту видна длина ключа. Кнопка «Подставить этот ключ» берёт найденный ключ (текстом, если байты читаются, иначе в hex) и сразу расшифровывает всё сообщение.
Так ломали настоящие шифры: в телеграммах были стандартные шапки, приветствия и подписи. Британцы называли такие догадки «шпаргалками» (crib).
Однобайтовый ключ
Если весь текст зашифрован одним и тем же байтом, вариантов всего 256. Утилита пробует их все и сортирует по тому, насколько результат похож на текст. Это классическая разминка в задачах по криптографии.
Частые вопросы
Что такое XOR?
Исключающее «или»: бит результата равен 1, если биты на входе разные, и 0, если одинаковые. Единица в ключе переворачивает бит данных, ноль оставляет как есть. Подробно — в уроке об XOR и одноразовом блокноте.
Надёжен ли XOR-шифр?
С коротким повторяющимся ключом — нет: его ломают по известному куску текста или по частотам. С ключом из настоящих случайных байтов длиной во всё сообщение, который используется один раз, это одноразовый блокнот, и его взломать невозможно. Для обычной жизни есть шифрование AES по паролю.
Почему в результате появились знаки «�»?
Байты после XOR не складываются в правильный UTF-8: ключ не тот или данные двоичные. Переключите вывод на hex.
Куда уходят мои данные?
Никуда. Всё считается в браузере.