Шифрование RC4 (устаревший алгоритм)
Шифруйте текст потоковым шифром RC4 (ARC4): парольная фраза, совместимая с OpenSSL, или сырой hex-ключ. Только для совместимости со старыми системами и тестов.
Результат — формат OpenSSL «Salted__» в Base64: случайная соль из 8 байт, затем шифротекст. Ключ и IV выводятся из парольной фразы и соли, поэтому один и тот же текст каждый раз шифруется по-разному. Эквивалентная команда:
Как и в OpenSSL, из парольной фразы выводится 128-битный ключ RC4. CryptoJS.RC4 с парольной фразой использует 256-битный ключ, поэтому его результат здесь не расшифровать.
openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k '…'Работает полностью в вашем браузере. Ваши данные никуда не загружаются.
Что такое Шифрование RC4?
Шифрует данные алгоритмом RC4 (он же ARC4 или ARCFOUR) — потоковым шифром, который когда-то применялся в WEP, ранних версиях TLS и многих форматах файлов. Результат имеет ту же длину, что и вход, потому что RC4 выполняет XOR данных с гаммой (потоком ключа).
Как пользоваться Шифрование RC4
- Выберите Парольная фраза (совместимо с OpenSSL) и введите парольную фразу либо Сырой ключ + IV (hex) и введите ключ длиной 1–256 байт в hex (RC4 не использует IV).
- Введите или вставьте Открытый текст.
- Нажмите Зашифровать и выберите Base64 или Hex в поле Кодировка результата.
- Скопируйте шифротекст.
Пример
Raw key 4b6579 ("Key"), plaintext "Plaintext", Hex output bbf316e8d940af0ad3
Классический тестовый вектор RC4.
Когда использовать Шифрование RC4
Используйте для совместимости со старым ПО или для проверки тестовых векторов RC4 (RFC 6229). Никогда не применяйте RC4 для нового шифрования: первые байты гаммы выдают информацию о ключе, а проверки целостности нет.
Как работает Шифрование RC4
RC4 строит из ключа 256-байтовую перестановку (алгоритм расписания ключа), а затем на каждый байт входа выдаёт один байт гаммы, который складывается по XOR с открытым текстом. Сырой режим использует байты вашего ключа напрямую (1–256 байт). Режим парольной фразы выводит 16-байтовый ключ из неё и случайной соли, как openssl enc -rc4 (EVP_BytesToKey MD5 или PBKDF2-SHA256), и выдаёт формат Salted__. Шифрование и расшифровка — одна и та же операция.
Распространенные Случаи Использования
- Проверить тестовые векторы RC4, например Key/Plaintext → BBF316E8D940AF0AD3
- Получить данные для устаревшего приложения, использующего ARC4
- Изучить, почему были взломаны WEP и RC4 в TLS
- Воспроизвести результат
openssl enc -rc4
Примечание по Безопасности
RC4 взломан: его гамма имеет сильные статистические смещения, а RFC 7465 запрещает его в TLS. Защиты целостности он не даёт. Используйте его только для устаревших данных.
Часто Задаваемые Вопросы
Почему я не могу расшифровать вывод CryptoJS.RC4, сделанный с парольной фразой?
CryptoJS выводит из парольной фразы 256-битный ключ RC4, а OpenSSL — 128-битный. Этот инструмент следует OpenSSL. С сырым ключом результаты обоих одинаковы.
Использует ли RC4 вектор инициализации (IV)?
Нет. Поэтому повторное использование одного ключа для двух сообщений губительно: XOR двух шифротекстов уничтожает гамму. Режим парольной фразы этого избегает, каждый раз беря случайную соль.
Какая команда OpenSSL соответствует результату?
openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k <passphrase> (OpenSSL 3 требует провайдера legacy).