Cifrado con el cifrado de flujo Rabbit
Cifra texto con el cifrado de flujo Rabbit (RFC 4503, eSTREAM) usando una contraseña en formato CryptoJS o una clave hex de 128 bits y un IV de 64 bits. En local.
La salida usa el formato "Salted__" de OpenSSL en Base64, con clave e IV derivados de la contraseña: el mismo formato que CryptoJS.Rabbit.encrypt(text, passphrase). OpenSSL no incluye el cifrado Rabbit.
Se ejecuta completamente en tu navegador. Tus datos nunca se suben.
¿Qué es Cifrado Rabbit?
Cifra datos con Rabbit, un cifrado de flujo rápido de 128 bits del portafolio eSTREAM (RFC 4503). Se encuentra sobre todo en proyectos JavaScript que usan CryptoJS.Rabbit, y esta herramienta produce una salida compatible con él.
Cómo usar Cifrado Rabbit
- Elige Contraseña (compatible con OpenSSL) y escribe una contraseña, o Clave + IV en bruto (hex) con una clave de 16 bytes y un IV opcional de 8 bytes.
- Escribe o pega el Texto plano.
- Haz clic en Cifrar, elige salida Base64 o Hex y copia el resultado.
Ejemplo
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
a0e87bbfc85cd88a7e42510ffa
Mismo resultado que CryptoJS.Rabbit con la misma clave y el mismo IV.
Cuándo usar Cifrado Rabbit
Úsalo para interoperar con una aplicación que usa CryptoJS Rabbit o para probar ese código. Para diseños nuevos elige AES-GCM o ChaCha20-Poly1305, que están estandarizados y autenticados.
Cómo funciona Cifrado Rabbit
Rabbit mantiene 513 bits de estado interno (ocho palabras de estado de 32 bits, ocho contadores y un bit de acarreo) y produce 128 bits de flujo de clave por iteración, que se combinan con XOR con los datos. La clave es de 128 bits; un IV opcional de 64 bits hace que el flujo de clave de cada mensaje sea único. El modo contraseña deriva la clave y el IV de la contraseña y una sal aleatoria con EVP_BytesToKey (MD5) o PBKDF2-SHA256 y produce datos Base64 Salted__, idénticos a CryptoJS.Rabbit.encrypt(text, passphrase) con la opción MD5. Las claves hex en bruto se leen en el orden del flujo de bytes, como hace CryptoJS; RFC 4503 imprime sus vectores de prueba como números big-endian, es decir, con cada bloque de 16 bytes invertido.
Casos de Uso Comunes
- Reproducir la salida de
CryptoJS.Rabbit.encryptpara depurar - Crear datos de prueba para una app JavaScript que usa Rabbit
- Comparar el comportamiento de este cifrado de flujo con RC4
- Comprobar los vectores de flujo de clave de RFC 4503
Nota de Seguridad
No se conoce ningún ataque práctico contra Rabbit, pero se usa poco, no tiene protección de integridad integrada y pocas librerías lo admiten. Usa AES-GCM para sistemas nuevos.
Preguntas Frecuentes
¿Es compatible con CryptoJS?
Sí. El modo contraseña con EVP_BytesToKey (MD5) coincide con CryptoJS.Rabbit.encrypt(text, "passphrase"), y el modo en bruto coincide con CryptoJS usando WordArrays explícitos de clave e IV.
¿OpenSSL puede descifrar Rabbit?
No, OpenSSL no implementa Rabbit. Solo el formato contenedor (Salted__ + sal) es el mismo.
¿Necesito un IV?
Es opcional en Rabbit, pero sin IV la misma clave siempre da el mismo flujo de clave. El modo contraseña siempre deriva un IV nuevo a partir de la sal aleatoria.