Cifrar / descifrar AES — GCM, CBC, CTR y ECB en su navegador
Cifrar / descifrar AES
Cifre o descifre con AES-128, AES-192 o AES-256 (FIPS 197) en modo GCM (cifrado autenticado), CBC, CTR o ECB. Las claves son bytes en hexadecimal o Base64, o se derivan de una contraseña con PBKDF2-HMAC-SHA256. GCM admite AAD y muestra la etiqueta de autenticación por separado; las salidas de CBC/CTR/ECB son compatibles con enc de OpenSSL. Para hashes vea el Generador de hash, para MAC con clave el Generador HMAC, y para cifrados heredados la página de cifrados heredados de esta familia. Se ejecuta por completo en local — las claves y el texto nunca salen de su pestaña. Archivos de hasta 200 MB.
Todo lo que escribe aquí se queda en esta pestaña — pero eso no equivale a “seguro para secretos de producción”. La memoria del navegador, las extensiones y las miradas ajenas ven lo que pega. Use esta página para aprender, verificar e interoperar, no para manejar datos reales de clientes.
Dirección:Modo:Salida:
GCM = AES-GCM con un nonce de 12 bytes y una etiqueta de autenticación de 128 bits (AEAD: confidencialidad + integridad). Es la opción predeterminada cuando lo importante es la seguridad.
Clave(bytes en bruto: 16, 24 o 32 bytes = AES-128/192/256; manda la longitud de lo que pegue)
El hexadecimal admite espacios, dos puntos y prefijos 0x.
Sal (hexadecimal, 8–16 bytes):
Iteraciones:Tamaño de clave:
La sal viaja junto con el texto cifrado: quien descifre necesita la misma contraseña, sal, número de iteraciones y tamaño de clave. OWASP recomienda al menos 600.000 iteraciones de PBKDF2-HMAC-SHA256.
IV / nonce(GCM: 12 bytes; CBC/CTR: 16 bytes — en hexadecimal)
Nunca reutilice un nonce con la misma clave en GCM o CTR.
AAD(datos adicionales autenticados — se autentican pero no se cifran; opcional)
Longitud de la etiqueta:
Etiqueta de autenticación(en hexadecimal, tal como la muestra esta página al cifrar — necesaria para descifrar)
Plaintext text (the data to encrypt, UTF-8 encoded)
Elija un archivo o arrástrelo y suéltelo aquí El archivo se lee en local en fragmentos de 8 MB; no se sube nada. Hasta 200 MB.
Ciphertext (una línea: modo, tamaño de clave, valor; los parámetros aparecen en las líneas siguientes)
Las líneas de parámetros registran la lectura exacta de la clave, el IV, el tamaño de AAD y la etiqueta, de modo que un resultado copiado siempre pueda reproducirse en otra máquina.
¿Qué modo debo elegir? GCM es la respuesta por defecto: cifra y autentica — la línea de la etiqueta permite detectar manipulaciones (si intenta descifrar cambiando un byte de la etiqueta, la página lo rechaza). CBC oculta los patrones de bloque pero no proporciona integridad; combínelo con un HMAC (vea el Generador HMAC) si debe usarlo. CTR convierte AES en un cifrado de flujo — sin relleno, pero reutilizar un nonce con la misma clave es catastrófico tanto en CTR como en GCM. ECB está aquí solo por compatibilidad y para enseñanza: bloques de texto plano idénticos se cifran en bloques de texto cifrado idénticos (el famoso pingüino de ECB).
Interoperabilidad con OpenSSL — las salidas de CBC y CTR de esta página (relleno PKCS#7, clave en bruto) son compatibles en ambos sentidos con la línea de comandos openssl enc: openssl enc -aes-256-cbc -K <clave-de-64-hex> -iv <iv-de-32-hex> -in msg.txt -out msg.enc openssl enc -d -aes-256-cbc -K <clave> -iv <iv> -in msg.enc -out msg.txt Lo mismo funciona con -aes-128-cbc, -aes-192-cbc, -aes-256-ctr (IV de 16 bytes = bloque de contador inicial). Tenga en cuenta que openssl encno admite GCM — use esta página, o openssl aesgcm de OpenSSL 3.3 o posterior, para el cifrado autenticado.
¿Necesita en su lugar el cifrado nacional chino? SM4 (GB/T 32907-2016) — el cifrado de bloque obligatorio en la criptografía comercial china, con el mismo bloque y tamaño de clave de 128 bits que AES pero con su propio programa de claves y su propia S-box — tiene su página propia en modo ECB y CBC: Cifrar / descifrar SM4. El resto de la familia SM también está allí: SM3 (hash), SM2 (clave pública) y SM9 (criptografía basada en identidad).
Autocomprobación Ejecuta los motores de la página contra anclas independientes: vectores de respuesta conocida para los cuatro modos (generados por una implementación nativa independiente), vectores de etiqueta GCM con y sin AAD, comprobaciones cruzadas del motor WebCrypto frente al motor AES en JavaScript puro, ida y vuelta de GCM, y pruebas negativas (una etiqueta alterada o una clave incorrecta deben fallar). No se envía nada a ningún lugar.
Explicación del cifrado AES desde cero
En una frase: AES es el cifrado de bloque estándar en todo el mundo — mezcla bloques de 16 bytes con una clave de 128, 192 o 256 bits — y el modo en que lo ejecuta (GCM, CBC, CTR, ECB) decide cómo se encadenan esos bloques, para qué sirve el IV y si una manipulación puede detectarse; elija GCM salvo que tenga un motivo para no hacerlo.
Qué es AES en sí (FIPS 197)
El cifrado de bloque. AES (el diseño Rijndael, estandarizado por el NIST en 2001 como FIPS 197) cifra exactamente 16 bytes cada vez. La longitud de su clave — 16, 24 o 32 bytes — selecciona AES-128, -192 o -256 y el número de rondas internas (10, 12 o 14). Cada ronda mezcla el bloque con subclaves derivadas de su clave mediante tablas de sustitución, desplazamientos de filas y mezclas de columnas. Ningún ataque práctico rompe el cifrado en sí: los fallos reales casi siempre son errores de modo, de IV o de gestión de claves, que es de lo que trata el resto de esta página.
¿Para qué sirve un modo? Porque los mensajes rara vez miden 16 bytes. El modo une los cifrados de bloque: ECB cifra cada bloque de forma independiente; CBC hace XOR de cada bloque con el texto cifrado anterior; CTR cifra un contador y hace XOR con los datos como un cifrado de flujo; GCM se basa en CTR y añade una etiqueta de autenticación. AES sigue siendo el mismo — el modo cambia todo en cuanto a las garantías que obtiene.
Claves y contraseñas. Una clave AES son 16, 24 o 32 bytes aleatorios. Una contraseña humana no lo es: la opción de contraseña de esta página deriva una clave adecuada con PBKDF2-HMAC-SHA256 (600.000 iteraciones por defecto, la base de OWASP de 2023 — vea el Generador HMAC para los detalles de la KDF). Nunca use una cadena de contraseña directamente como clave AES: su entropía es una pequeña fracción de su longitud.
Comparación de los cuatro modos
Modo
IV / nonce
Integridad
Notas
GCM
12 bytes, único por mensaje
Sí — etiqueta de 96 a 128 bits
AEAD: el valor predeterminado recomendado en todas partes (TLS 1.3, SSH, formatos de archivo). Admite también AAD.
CBC
16 bytes, impredecible
No
Relleno PKCS#7; clásico, pero necesita un MAC junto a él. Los fallos del oráculo de relleno son el error clásico de CBC.
CTR
Contador inicial de 16 bytes
No
Sin relleno, similar a un flujo, acceso aleatorio; reutilizar el nonce con una misma clave filtra el XOR de los textos planos.
ECB
Ninguno
No
Bloques idénticos → texto cifrado idéntico. La demostración del pingüino de ECB. Solo compatibilidad.
Reglas del IV en un párrafo. El IV no es un secreto — envíelo junto al texto cifrado — pero sus reglas de unicidad difieren: CBC exige un IV impredecible; GCM y CTR solo exigen no reutilizar nunca el mismo nonce con la misma clave (la reutilización del nonce en GCM es peor: filtra la clave de autenticación). El botón de IV aleatorio de esta página usa el generador seguro del navegador; el botón de todo ceros existe para reproducir vectores de prueba, no para mensajes reales.
Relleno. CBC y ECB necesitan bloques completos, así que el relleno PKCS#7 añade de 1 a 16 bytes, cada uno con el valor de la longitud del relleno. Por eso los textos cifrados de CBC crecen hasta 16 bytes y por eso descifrar con una clave incorrecta suele fallar con un error de relleno. CTR y GCM son similares a un flujo y no necesitan relleno — la longitud del texto cifrado coincide exactamente con la del texto plano (pruebe el Ejemplo en modo CTR: 43 bytes de entrada, 43 bytes de salida).
CFB y OFB (los dos modos clásicos restantes) no están implementados en esta página: son similares a un flujo como CTR, pero sin ninguna ventaja sobre él, y sobreviven sobre todo en protocolos antiguos.
Lo que añade GCM (AEAD, etiquetas, AAD)
Cifrado autenticado. GCM = cifrado CTR + un autenticador GHASH sobre el texto cifrado, el IV y el AAD. La etiqueta de salida es una huella de todo: si cambia un solo bit del texto cifrado, del IV o del AAD, la etiqueta ya no coincide, así que el receptor puede demostrar que el mensaje está intacto y procede de quien tiene la clave. CBC+HMAC logra lo mismo solo si lo compone correctamente (cifrar y luego MAC) — GCM lo hace bien por diseño.
AAD. Los datos adicionales autenticados viajan sin cifrar, pero la etiqueta los cubre: cabeceras de protocolo, nombres de archivo, identificadores de algoritmo. El receptor debe proporcionar exactamente los mismos bytes de AAD o la comprobación de la etiqueta falla — ese es el objetivo.
Longitud de la etiqueta. La etiqueta predeterminada de 128 bits es la recomendación; las etiquetas más cortas (de 96 a 120 bits) cambian resistencia a la falsificación por tamaño. Por debajo de 96 bits las pruebas de seguridad de GCM se degradan rápidamente, por eso esta página se detiene ahí.
La catástrofe del nonce. Reutilizar un nonce de GCM de 12 bytes con la misma clave filtra el XOR de los textos planos de los dos mensajes y la subclave de autenticación — después de lo cual son posibles falsificaciones de todos los mensajes futuros con esa clave. Los sistemas que no pueden garantizar la unicidad usan variantes resistentes al mal uso del nonce (AES-GCM-SIV, RFC 8452).
Valores de anclaje — reprodúzcalos en esta página
La primera fila es el famoso ejemplo de un solo bloque de FIPS 197; las demás las generó una implementación nativa independiente (OpenSSL mediante Node.js) y se volvieron a verificar en los motores de esta página. Pegue la clave, el IV y la entrada en la página para reproducir cada línea.
Caso
Entradas
Salida esperada
AES-128, un solo bloque (estilo FIPS 197)
key 000102..0f, plaintext 00112233..ff
69c4e0d86a7b0430d8cdb78070b4c55a
AES-128-GCM
key 000102..0f, IV 606162..6b, plaintext 0011..ef ×2
ct 275f095bedfda377063fee326128892188377b410698ed03a022b9971bb4bdbe, tag 87ea7770714048977de2fd8dac645ecf
AES-256-GCM, igual pero con AAD deadbeef
key 000102..1f
ct eacab966ff15e518f48f5390be502fbc2756ccee0dcfff36a282c50bf5593ae7, tag aead900e895c88252d0388d7aefce5c8
AES-256-CBC
key 000102..1f, IV 101112..1f, plaintext 0011..ef ×2
Usar ECB porque no necesita IV. La comodidad es la trampa: los patrones de bloque se filtran directamente en el texto cifrado (cifre un mapa de bits y aún se ve la imagen). ECB solo es aceptable para bloques individuales o claves aleatorias de exactamente 16 bytes — en la práctica, nunca por elección.
Reutilizar un nonce o IV. Con GCM o CTR bajo una misma clave, es el único error que rompe todo a la vez. Los sistemas basados en contadores (el botón de IV aleatorio de esta página) existen para hacerlo imposible.
Tratar el IV como secreto. No lo es. Guárdelo o transmítalo junto al texto cifrado. Ocultarlo no aporta nada y anima a reutilizarlo.
Usar una contraseña como clave."hunter2hunter2hunter2hunter2" tiene 32 bytes, pero no 256 bits de entropía — es una palabra de diccionario con relleno. Derive la clave con PBKDF2 (integrado en esta página) o genere una clave aleatoria.
Suponer que CBC detecta manipulaciones. Cambie un bit en un texto cifrado CBC y el descifrado “funciona” con un texto plano dañado en silencio. Solo la etiqueta de GCM (o un HMAC explícito) hace visible una manipulación.
Comparar textos cifrados GCM por igualdad. Con nonces aleatorios, el mismo texto plano se cifra de forma distinta cada vez — eso es una característica. El cifrado determinista es otra herramienta, especializada.
Preguntas frecuentes
¿AES-128 sigue siendo seguro o necesito 256? Ambos son seguros frente a atacantes realistas; los mejores ataques conocidos reducen solo una fracción del margen. AES-256 importa sobre todo para secretos a largo plazo y como tranquilidad frente a la computación cuántica (el algoritmo de Grover reduce a la mitad la fortaleza de la clave, dejando AES-256 en un equivalente de unos 128 bits).
¿Por qué openssl enc no hace GCM? El comando enc es anterior a AEAD y no tiene forma de transportar una etiqueta; OpenSSL 3.3 añadió en su lugar un comando específico, aesgcm. La salida GCM de esta página mantiene la etiqueta en una línea aparte para que pueda mover ambas cosas de forma explícita.
¿Qué es el envoltorio de claves (AES-KW)? Un modo especializado para cifrar otras claves en fragmentos fijos de 64 bits con su propia comprobación de integridad. No se ofrece aquí porque sus entradas y salidas tienen forma de clave, no de mensaje — el mal uso es lo habitual.
¿Por qué mi texto cifrado CTR tiene la misma longitud que el texto plano, pero el de CBC es más largo? CTR y GCM son similares a un flujo (sin relleno); CBC/ECB rellenan hasta completar un bloque de 16 bytes con PKCS#7. La diferencia de longitud es por diseño, no un error.
¿Puedo descifrar algo cifrado en otro lugar? Sí, si conoce el modo exacto, la clave, el IV (y, en GCM, la etiqueta). Las líneas de salida de esta página registran todos ellos con precisión, para que pueda trasladar parámetros entre herramientas — el cuadro de OpenSSL de arriba muestra las líneas de comando equivalentes.