Шифрование потоковым шифром Rabbit
Шифруйте текст потоковым шифром Rabbit (RFC 4503, eSTREAM): парольная фраза в формате CryptoJS или 128-битный hex-ключ и 64-битный IV. Работает локально.
Результат — формат OpenSSL «Salted__» в Base64, ключ и IV выводятся из парольной фразы; это тот же формат, что у CryptoJS.Rabbit.encrypt(text, passphrase). В самом OpenSSL шифра Rabbit нет.
Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Что такое Шифрование Rabbit?
Шифрует данные шифром Rabbit — быстрым 128-битным потоковым шифром из портфеля eSTREAM (RFC 4503). Он встречается в основном в JavaScript-проектах с CryptoJS.Rabbit, и этот инструмент создаёт совместимый с ним результат.
Как пользоваться Шифрование Rabbit
- Выберите Парольная фраза (совместимо с OpenSSL) и введите парольную фразу либо Сырой ключ + IV (hex) с 16-байтовым ключом и необязательным 8-байтовым IV.
- Введите или вставьте Открытый текст.
- Нажмите Зашифровать, выберите вывод 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 из случайной соли.