Шифрование потоковым шифром Rabbit

Шифруйте текст потоковым шифром Rabbit (RFC 4503, eSTREAM): парольная фраза в формате CryptoJS или 128-битный hex-ключ и 64-битный IV. Работает локально.

Rabbit — малораспространённый потоковый шифр без защиты целостности и с плохой поддержкой в библиотеках. Для новых приложений лучше AES-GCM.

Результат — формат OpenSSL «Salted__» в Base64, ключ и IV выводятся из парольной фразы; это тот же формат, что у CryptoJS.Rabbit.encrypt(text, passphrase). В самом OpenSSL шифра Rabbit нет.

Работает полностью в вашем браузере. Ваши данные никуда не загружаются.

Что такое Шифрование Rabbit?

Шифрует данные шифром Rabbit — быстрым 128-битным потоковым шифром из портфеля eSTREAM (RFC 4503). Он встречается в основном в JavaScript-проектах с CryptoJS.Rabbit, и этот инструмент создаёт совместимый с ним результат.

Как пользоваться Шифрование Rabbit

  1. Выберите Парольная фраза (совместимо с OpenSSL) и введите парольную фразу либо Сырой ключ + IV (hex) с 16-байтовым ключом и необязательным 8-байтовым IV.
  2. Введите или вставьте Открытый текст.
  3. Нажмите Зашифровать, выберите вывод Base64 или Hex и скопируйте результат.

Пример

Ввод
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
Вывод
a0e87bbfc85cd88a7e42510ffa

Тот же результат, что у CryptoJS.Rabbit с тем же ключом и IV.

Когда использовать Шифрование Rabbit

Используйте для совместимости с приложением, где применяется CryptoJS Rabbit, или для тестов такого кода. Для новых решений выбирайте AES-GCM или ChaCha20-Poly1305: они стандартизированы и обеспечивают аутентификацию.

Как работает Шифрование Rabbit

Rabbit хранит 513 бит внутреннего состояния (восемь 32-битных слов состояния, восемь счётчиков и бит переноса) и выдаёт 128 бит гаммы за итерацию, которые складываются по XOR с данными. Ключ имеет 128 бит; необязательный 64-битный IV делает гамму каждого сообщения уникальной. Режим парольной фразы выводит ключ и IV из неё и случайной соли через EVP_BytesToKey (MD5) или PBKDF2-SHA256 и выдаёт данные Salted__ в Base64 — идентично CryptoJS.Rabbit.encrypt(text, passphrase) с вариантом MD5. Сырые hex-ключи читаются в порядке байтового потока, как в CryptoJS; RFC 4503 печатает тестовые векторы как числа с порядком big-endian, то есть каждый 16-байтовый блок записан в обратном порядке.

Распространенные Случаи Использования

  • Воспроизвести результат CryptoJS.Rabbit.encrypt при отладке
  • Создать тестовые данные для JavaScript-приложения с Rabbit
  • Сравнить поведение потоковых шифров с RC4
  • Проверить векторы гаммы из RFC 4503

Примечание по Безопасности

Для Rabbit практических атак не известно, но он редко применяется, не имеет встроенной защиты целостности, и его поддерживают немногие библиотеки. Для новых систем используйте AES-GCM.

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

Совместим ли он с CryptoJS?

Да. Режим парольной фразы с EVP_BytesToKey (MD5) совпадает с CryptoJS.Rabbit.encrypt(text, "passphrase"), а сырой режим — с CryptoJS при явных ключе и IV в виде WordArray.

Может ли OpenSSL расшифровать Rabbit?

Нет, в OpenSSL Rabbit не реализован. Совпадает только формат контейнера (Salted__ + соль).

Нужен ли IV?

Для Rabbit он необязателен, но без IV один и тот же ключ всегда даёт одну и ту же гамму. Режим парольной фразы всегда выводит новый IV из случайной соли.

Другие категории