Cifrar y descifrar con DES / 3DES / RC4 / Blowfish

Cifre o descifre con los cuatro cifrados clásicos que todavía aparecen en archivos antiguos, copias de seguridad y protocolos: DES y 3DES en ECB o CBC, RC4 (ARCFOUR) como cifrado de flujo, y Blowfish con claves de hasta 56 bytes. Verificados con FIPS 46-3, los vectores publicados por Schneier para Blowfish y RFC 6229. Todo se ejecuta localmente en su navegador: no se sube nada. Para trabajo nuevo use AES-GCM.
Estos cifrados están aquí por compatibilidad, no para trabajo nuevo. DES se retiró en 2005, 3DES en 2023, RC4 está prohibido en TLS desde 2015 (RFC 7465), y el bloque de 64 bits de Blowfish alcanza su límite de cumpleaños tras unos 32 GiB de datos bajo una misma clave. Use AES-GCM para cualquier caso nuevo.
Dirección: Cifrado: Modo: Salida:
DES = el Data Encryption Standard de 1977: bloques de 64 bits, clave efectiva de 56 bits. Retirado, pero todavía presente en copias antiguas, bloques PIN (banca) y Kerberos v4. La clave debe tener exactamente 8 bytes.
El formato hex admite espacios, dos puntos y prefijos 0x. DES ignora el bit de paridad de cada byte de la clave.
Los cifrados de bloque usan relleno PKCS#7; RC4 nunca rellena.
Longitudes de clave que admite esta página
CifradoClaveBloqueEstado
DESexactamente 8 bytes (56 bits efectivos)64 bitsretirado en 2005 (NIST SP 800-131A)
3DES-EDE3exactamente 24 bytes (112 bits efectivos)64 bitsno permitido después de 2023 (SP 800-131A r2)
3DES-EDE2exactamente 16 bytes (112 bits efectivos)64 bitsigual que EDE3, opción heredada más débil
RC4 / ARCFOURde 1 a 256 bytesflujoprohibido en TLS desde 2015 (RFC 7465)
Blowfishde 4 a 56 bytes64 bitssin romper, pero limitado por bloque de 64 bits; use Twofish o AES
El tamaño efectivo de la clave es menor que el tamaño bruto porque DES usa un bit de cada byte como paridad: una clave bruta de 64 bits solo lleva 56 bits de clave, y 3DES con tres claves independientes lleva 112 (ataque de encuentro en el medio).
Interoperabilidad con OpenSSL — OpenSSL 3 trasladó estos cifrados al proveedor legacy; añada -provider legacy si el suyo los rechaza. Equivalentes de línea de comandos de esta página:
openssl enc -des-ecb -K 133457799BBCDFF1 -in msg.bin -out msg.enc
openssl enc -des3 -K <48 hex> -iv <16 hex> -in msg.bin -out msg.enc (3DES-CBC)
openssl enc -rc4 -K 4b6579 -in msg.bin -out msg.enc  /  -bf-cbc para Blowfish-CBC.
Para descifrar use -d. -K toma una clave hex en bruto; -k toma una contraseña (evítelo: el KDF difiere de todo lo de esta página).
Autocomprobación
Vuelve a ejecutar el motor de la página frente a vectores publicados y generados de forma independiente: el ejemplo trabajado de FIPS 46-3 para DES, textos cifrados de 3DES EDE2/EDE3 generados con OpenSSL, los vectores de Schneier para Blowfish, los vectores RC4 de RFC 6229 y el clásico ejemplo «Key/Plaintext», ida y vuelta en todos los modos, y pruebas negativas (una clave de tamaño incorrecto o un texto cifrado que no es múltiplo del bloque deben fallar). Nada se envía a ningún sitio.
DES, 3DES, RC4 y Blowfish explicados desde cero
En una frase: estos cuatro cifrados fueron el pilar de los años noventa — DES y su alternativa de triple cifrado 3DES, el cifrado de flujo RC4 y Blowfish — y hoy todos están retirados o desaconsejados, mantenidos solo por archivos antiguos, hardware antiguo y protocolos antiguos que todavía deben poder leerse.
DES: el estándar de 1977 que lo inició todo

Qué es. El Data Encryption Standard (FIPS 46, 1977) es un cifrado Feistel de 16 rondas sobre bloques de 64 bits con una clave de 56 bits (almacenada en 8 bytes porque un bit de cada byte es un control de paridad). Lo diseñó IBM con aportes de la NSA, se convirtió en el estándar de EE. UU. durante dos décadas y quedó roto en la práctica en 1998, cuando la máquina Deep Crack de la EFF obtuvo una clave por fuerza bruta en 56 horas con un coste de 250 000 dólares en hardware. NIST lo retiró para cifrado en 2005.

Por qué el bit de paridad confunde las longitudes de clave. Cada 8.º bit de una clave DES se calcula a partir de los otros siete, así que una clave de 8 bytes solo tiene 56 bits independientes — por eso verá tanto «clave de 64 bits» como «clave de 56 bits» para el mismo cifrado. 3DES hereda esto: 24 bytes brutos = 168 bits brutos = 112 efectivos (el ataque de encuentro en el medio elimina el resto).

Dónde todavía aparece. En bloques PIN bancarios (ISO 9564), en algunos dominios Kerberos v4, en copias de seguridad antiguas y en tarjetas inteligentes. Si un sistema exige DES hoy, o interopera con hardware de los años noventa o simplemente es inseguro.

3DES: cifrar, descifrar, cifrar

El truco. Triple-DES ejecuta DES tres veces sobre cada bloque: EDE3 usa tres claves distintas (C = Ek3(Dk2(Ek1(P)))); el paso de descifrado en medio existe para que una implementación de 3DES pueda emular DES simple haciendo k1=k2. EDE2 usa solo dos claves (k1=k3), con 112 bits efectivos. La construcción fue un arreglo rápido que triplicó la seguridad de un cifrado ya atacado sin inventar uno nuevo.

Por qué murió de todos modos. Dos problemas: es lento (tres pasadas completas de DES por bloque, unas 20 veces más lento que AES) y mantuvo el bloque de 64 bits. Con 32 GiB de datos bajo una misma clave (el límite de cumpleaños de 232 bloques), las colisiones de bloques se vuelven lo bastante probables como para filtrar estructura del texto plano — el ataque Sweet32 (2016) lo demostró contra sesiones TLS con 3DES. NIST no permite el cifrado con 3DES después de 2023 (SP 800-131A r2); PCI DSS exige su retirada en sistemas de pago.

RC4 / ARCFOUR: el cifrado de flujo de la web temprana

Cómo funciona. RC4 (Ron's Code 4, diseñado en 1987, filtrado en 1994) es un cifrado de flujo: la clave programa una permutación de 256 bytes (KSA), y después la permutación emite un flujo pseudoaleatorio de bytes (PRGA) que se combina mediante XOR con el mensaje. Sin relleno, sin tamaño de bloque, cualquier longitud de mensaje y muy rápido en software — por eso dominó SSL/TLS y WEP en los años noventa. «ARCFOUR» es el nombre libre de marcas que usan la mayoría de los proyectos de código abierto.

Cómo se rompió. Fluhrer, Mantin y Shamir (2001) demostraron que los primeros bytes del flujo de claves están sesgados — fatal en WEP, cuya construcción de clave por paquete alimentaba esos bytes a los atacantes. Ataques posteriores de sesgo (2013, AlFardan et al.) recuperaron texto plano de sesiones TLS protegidas con RC4 tras millones de conexiones. La RFC 7465 (2015) prohíbe RC4 en TLS sin más.

El vector clásico. Clave «Key» (3 bytes) y mensaje «Plaintext» dan el texto cifrado bbf316e8d940af0ad3 — pruebe el ejemplo RC4 y compare. La autocomprobación de esta página también verifica el flujo de claves de RFC 6229 para la clave de 40 bits 01 02 03 04 05: b2396305f03dc027ccc3524a0a1118a8.

Blowfish: sin romper, pero limitado por bloque

Qué es. Cifrado Feistel de Bruce Schneier de 1993: bloques de 64 bits, claves de 32 a 448 bits (4 a 56 bytes), 16 rondas y un famoso programa de claves que ejecuta el propio Blowfish 521 veces para generar sus subclaves — lo que hace lenta la preparación de la clave, pero también caros los intentos de fuerza bruta. No hay criptoanálisis práctico que rompa Blowfish con todas las rondas.

Por qué está aquí de todos modos. El problema es el bloque de 64 bits, no el algoritmo: a partir de unos 32 GiB bajo una misma clave, las colisiones de cumpleaños filtran datos (mismo límite que 3DES, al estilo Sweet32). El propio Schneier recomienda su sucesor Twofish (finalista de AES) o AES para cualquier caso nuevo. Blowfish sigue vivo en bcrypt — el programa de claves del hash de contraseñas es Blowfish — lo cual está bien, porque el hash usa entradas diminutas, no gigabytes.

Los vectores clásicos. La clave de ceros y el texto plano de ceros cifran a 4ef997456198dd78 (primer bloque de la salida de ejemplo); la clave «abcdefghijklmnopqrstuvwxyz» sobre «BLOWFISH» da 324ed0fef413a203. Ambos provienen del archivo de vectores publicado por Schneier y los comprueba la autocomprobación.

Errores habituales
  • Usar estos cifrados para datos nuevos. Todos los cifrados de esta página están desaconsejados excepto Blowfish (limitado por el tamaño de bloque). La elección moderna correcta es AES-GCM — vea Cifrar / descifrar AES.
  • Clave DES a partir de una contraseña. Una contraseña de 8 caracteres no son 56 bits aleatorios; son unos pocos bits de entropía por carácter. Los sistemas antiguos hacían exactamente esto, y es la causa más habitual de que los archivos «cifrados con DES» caigan en minutos ante ataques de diccionario.
  • Reutilizar un IV en CBC. El primer bloque filtra entonces la igualdad del texto plano entre mensajes con la misma clave. El botón IV aleatorio existe por esta razón.
  • Reutilizar un flujo de claves RC4. RC4 combina mediante XOR el mismo flujo para la misma clave: cifrar dos mensajes con una clave equivale a un cifrado de una sola vez roto — si combina los textos cifrados mediante XOR, salen ambos textos planos. El fallo fatal de WEP fue exactamente una construcción con reutilización del flujo de claves.
  • Suponer que «si descifra, está bien». ECB y CBC aquí solo validan el relleno al descifrar — una clave incorrecta suele dar basura que aun así puede quitarse el relleno. Ningún modo heredado tiene comprobación de integridad; si la necesita, necesita AES-GCM, no estos.
  • Contar 3DES como «168 bits». La clave bruta tiene 168 bits, pero la fortaleza efectiva es de 112 — el ataque de encuentro en el medio reduce el cifrado triple a doble más un poco, exactamente como ocurre con las construcciones antecesoras de 3DES.
Preguntas frecuentes

¿Por qué mantener una herramienta de cifrados rotos? Por compatibilidad. Las copias de seguridad cifradas, los archivos exportados en formatos antiguos, las capturas de protocolo, los desafíos CTF y el hardware que no puede actualizarse siguen hablando estos cifrados. Leer datos antiguos es legítimo; escribir datos nuevos con ellos no lo es.

Mi clave DES tiene paridad impar o bytes no ASCII. DES ignora el bit de paridad de cada byte de la clave, así que la clave efectiva son de todos modos los otros 56 bits. Esta página acepta cualquier conjunto de 8 bytes y no exige paridad par.

¿Por qué a veces el texto descifrado parece basura? Clave incorrecta, modo incorrecto, IV incorrecto, o los datos no se cifraron como supone. Sin etiqueta de autenticación no hay un error de «clave incorrecta» limpio — la comprobación de relleno es la única pista, y puede pasar por azar (1 de cada 256 veces).

¿Es Blowfish seguro para mis archivos? Para archivos pequeños, criptográficamente sí (no hay rotura práctica). Para cualquier cosa de escala de gigabytes bajo una sola clave, no — el límite de cumpleaños del bloque de 64 bits depende del volumen de datos, no de la fortaleza de la clave. Twofish o AES evitan el problema.

¿Y las claves de Blowfish de 72 bytes que vi en alguna parte? Algunas implementaciones aceptan hasta 72 bytes, pero la referencia de Schneier usa 56 y los bytes adicionales no aportan más difusión en el programa de claves estándar. Esta página sigue la referencia: de 4 a 56 bytes.