Cifrado RC4 (heredado)
Cifra texto con el cifrado de flujo RC4 (ARC4) usando una contraseña compatible con OpenSSL o una clave hex en bruto. Solo para compatibilidad heredada y vectores de prueba.
La salida usa el formato "Salted__" de OpenSSL en Base64: una sal aleatoria de 8 bytes seguida del texto cifrado. La clave y el IV se derivan de la contraseña y la sal, así que el mismo texto da un resultado distinto cada vez. Comando equivalente:
La contraseña se convierte en una clave RC4 de 128 bits, igual que en OpenSSL. CryptoJS.RC4 con contraseña usa una clave de 256 bits, por lo que su salida no se puede descifrar aquí.
openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k '…'Se ejecuta completamente en tu navegador. Tus datos nunca se suben.
¿Qué es Cifrado RC4?
Cifra datos con RC4 (también llamado ARC4 o ARCFOUR), un cifrado de flujo que se usó en WEP, en las primeras versiones de TLS y en muchos formatos de archivo. La salida tiene la misma longitud que la entrada porque RC4 aplica un XOR entre los datos y un flujo de clave.
Cómo usar Cifrado RC4
- Elige Contraseña (compatible con OpenSSL) y escribe una contraseña, o Clave + IV en bruto (hex) e introduce una clave de 1 a 256 bytes en hex (RC4 no usa IV).
- Escribe o pega el Texto plano.
- Haz clic en Cifrar y elige Base64 o Hex como Codificación de salida.
- Copia el texto cifrado.
Ejemplo
Raw key 4b6579 ("Key"), plaintext "Plaintext", Hex output bbf316e8d940af0ad3
El vector de prueba clásico de RC4.
Cuándo usar Cifrado RC4
Úsalo para interoperar con software antiguo o comprobar vectores de prueba RC4 (RFC 6229). Nunca uses RC4 para cifrados nuevos; los primeros bytes del flujo de clave filtran información sobre la clave y no hay comprobación de integridad.
Cómo funciona Cifrado RC4
RC4 construye una permutación de 256 bytes a partir de la clave (algoritmo de programación de clave) y luego genera un byte de flujo de clave por cada byte de entrada, que se combina con XOR con el texto plano. El modo en bruto usa directamente los bytes de tu clave (de 1 a 256 bytes). El modo contraseña deriva una clave de 16 bytes de la contraseña y una sal aleatoria como openssl enc -rc4 (EVP_BytesToKey MD5 o PBKDF2-SHA256) y genera el formato Salted__. Cifrar y descifrar son la misma operación.
Casos de Uso Comunes
- Verificar vectores de prueba RC4 como Key/Plaintext → BBF316E8D940AF0AD3
- Producir datos para una aplicación heredada que usa ARC4
- Estudiar por qué se rompieron WEP y RC4 en TLS
- Recrear la salida de
openssl enc -rc4
Nota de Seguridad
RC4 está roto: su flujo de clave tiene fuertes sesgos estadísticos y RFC 7465 prohíbe usarlo en TLS. No ofrece protección de integridad. Úsalo solo para datos heredados.
Preguntas Frecuentes
¿Por qué no puedo descifrar la salida de CryptoJS.RC4 hecha con contraseña?
CryptoJS deriva de la contraseña una clave RC4 de 256 bits; OpenSSL deriva una clave de 128 bits. Esta herramienta sigue a OpenSSL. Con una clave en bruto, ambos producen resultados idénticos.
¿RC4 usa IV?
No. Por eso reutilizar la misma clave para dos mensajes es catastrófico: al hacer XOR de los dos textos cifrados se anula el flujo de clave. El modo contraseña lo evita usando una sal aleatoria cada vez.
¿Qué comando de OpenSSL corresponde?
openssl enc -rc4 -md md5 -a -A -provider legacy -provider default -k <passphrase> (OpenSSL 3 necesita el proveedor legacy).