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.

Rabbit es un cifrado de flujo poco común, sin protección de integridad y con poco soporte en bibliotecas. Para aplicaciones nuevas, prefiere AES-GCM.

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

  1. 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.
  2. Escribe o pega el Texto plano.
  3. Haz clic en Cifrar, elige salida Base64 o Hex y copia el resultado.

Ejemplo

Entrada
Raw key 000102030405060708090a0b0c0d0e0f, IV 0001020304050607, plaintext "Rabbit stream", Hex output
Salida
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.encrypt para 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.

Explora más categorías