ToolActToolAct

Encriptador/Desencriptador AES

Cifrado AES profesional con 6 modos y 5 opciones de relleno

Configuración de Cifrado

Entrada
Caracteres: 0
Bytes: 0
Salida
Caracteres: 0
Bytes: 0

¿Qué es el Cifrado AES?

AES (Advanced Encryption Standard) es el algoritmo de cifrado simétrico más utilizado a nivel mundial, aprobado por la NSA para proteger información TOP SECRET. AES evolucionó del cifrado Rijndael diseñado por los criptógrafos belgas Joan Daemen y Vincent Rijmen, y fue publicado oficialmente por NIST en 2001 como reemplazo del algoritmo DES envejecido. AES utiliza cifrado en bloques con un tamaño fijo de 128 bits (16 bytes) y soporta tres longitudes de clave: 128, 192 y 256 bits, correspondientes a los niveles de seguridad AES-128, AES-192 y AES-256. Claves más largas proporcionan mayor seguridad pero con velocidad ligeramente menor. Como algoritmo de cifrado simétrico, AES usa la misma clave para cifrar y descifrar, siendo mucho más eficiente que el cifrado asimétrico. AES tiene aplicaciones extensas: en seguridad de red, los protocolos TLS/SSL usan AES para proteger la navegación web y transmisión de correo electrónico; en seguridad de almacenamiento, herramientas como BitLocker y FileVault usan AES para cifrar datos de usuario; en seguridad de bases de datos, muchos sistemas soportan cifrado AES a nivel de columna; en IoT, AES se usa ampliamente para comunicación segura entre dispositivos. Esta herramienta soporta los 6 modos de cifrado AES (ECB, CBC, CFB, OFB, CTR, GCM) y 5 esquemas de relleno para satisfacer diversas necesidades de cifrado.

Cómo usar

Cómo usar

  1. Selecciona el modo de cifrado (se recomienda GCM para cifrado y verificación de integridad)
  2. Selecciona el esquema de relleno (los modos GCM, CFB, OFB y CTR no aplican relleno automáticamente)
  3. Selecciona la longitud de clave (256 bits para máxima seguridad, 128 bits para mejor rendimiento)
  4. Introduce la clave o haz clic en 'Generar Clave Aleatoria' para generar una automáticamente
  5. En los modos que requieren IV, introduce o genera un vector de inicialización
  6. Introduce el texto plano (para cifrar) o el texto cifrado (para descifrar) en el panel izquierdo
  7. Los resultados aparecen automáticamente en el panel derecho
  8. Haz clic en 'Copiar' para copiar los resultados, o en 'Intercambiar' para intercambiar entrada y salida

Modos de cifrado

  • GCMGalois/Counter Mode, recomendado. Ofrece cifrado y autenticación, no requiere relleno, admite procesamiento paralelo y es ideal para transmisión en red y TLS
  • CBCCipher Block Chaining, modo clásico. Aplica una operación XOR entre cada bloque de texto plano y el bloque de texto cifrado anterior antes de cifrar; requiere relleno e IV; buena seguridad, pero sin soporte paralelo
  • CFBCipher Feedback, modo de cifrado de flujo. Convierte un cifrado de bloque en cifrado de flujo, no requiere relleno y es ideal para datos en streaming y cifrado en tiempo real
  • OFBOutput Feedback, similar a CFB, pero los errores no se propagan; adecuado para canales con ruido y no requiere relleno
  • CTRModo Counter. Usa un contador incremental para generar el flujo de claves, no requiere relleno, admite cifrado paralelo completo y ofrece un rendimiento excelente
  • ECBElectronic Codebook, NO recomendado. El mismo texto plano produce el mismo texto cifrado, lo que filtra patrones; solo apto para cifrar bloques individuales

Esquemas de relleno

  • PKCS7Relleno PKCS#7, el más común y recomendado. Rellena automáticamente con N bytes de valor N y se elimina de forma precisa y sin ambigüedad al descifrar
  • ZeroPaddingRelleno con ceros. Añade bytes 0x00; es simple, pero puede generar ambigüedad cuando los datos terminan de forma natural con bytes cero
  • NoPaddingSin relleno. Exige que la longitud sea múltiplo exacto de 16 bytes; adecuado para modos de flujo o datos de longitud conocida
  • ISO7859Relleno ISO/IEC 7816-4. El primer byte es 0x80 seguido de bytes 0x00; muy usado en tarjetas inteligentes y el sector financiero
  • ANSIX923Relleno ANSI X.923. Los bytes de relleno son 0x00 y el último byte indica la longitud del relleno; habitual en el intercambio de datos financieros

Consejos de uso

  • Genera las claves con números aleatorios criptográficamente seguros y evita cadenas fáciles de adivinar
  • Usa un IV aleatorio distinto en cada cifrado; nunca reutilices los IVs
  • El modo GCM recomienda IVs de 12 bytes (96 bits) para un rendimiento y seguridad óptimos
  • Los modos CTR y GCM admiten procesamiento paralelo, lo que acelera el cifrado de grandes volúmenes de datos
  • Las claves e IVs pueden introducirse en formato hexadecimal, texto o Base64
  • Longitudes de clave en hexadecimal: 128 bits = 32 caracteres, 192 bits = 48 caracteres, 256 bits = 64 caracteres

Casos de uso

Reproducir exactamente una integración AESUtiliza la página cuando otro sistema especifique una combinación concreta como AES-256-CBC con PKCS#7, una clave hexadecimal, un IV en Base64 y texto cifrado en Base64. Los controles separados para clave, IV, entrada y formato de salida permiten ajustarse a ese contrato sin reescribir un harness de pruebas. Cada operación — SubBytes, ShiftRows, MixColumns, AddRoundKey — se ejecuta localmente en el navegador mediante la implementación de aes-js, de modo que el texto cifrado nunca sale de la red y la clave nunca abandona la pestaña.
Comparar modos y rellenos antes de elegir unoAlterna entre ECB, CBC, CFB, OFB, CTR y GCM, y prueba PKCS#7, ZeroPadding, NoPadding, ISO/IEC 7816-4 o ANSI X.923 donde aplique el relleno. Así se hacen visibles las diferencias entre modos y esquemas de relleno, incluyendo por qué los modos de flujo (CFB, OFB, CTR) no necesitan relleno y por qué ECB filtra patrones. El requisito de IV de 16 bytes para CBC y el IV recomendado de 12 bytes para GCM pueden probarse ambos sobre el mismo texto plano.
Generar material de ejemplo seguro para documentaciónCrea claves e IVs aleatorios en el formato de visualización actual, cifra un texto plano inofensivo y copia el resultado en hexadecimal o Base64 para ejemplos en README, tickets de API o vectores de prueba entre lenguajes. Como la clave y el texto plano permanecen dentro de la pestaña del navegador, se pueden construir fragmentos de ejemplo con material realista sin enviar datos con apariencia de producción a un codificador remoto.
Diagnosticar discrepancias con la salida de otra bibliotecaCuando el módulo crypto de Node, pycryptodome de Python o javax.crypto de Java produce texto cifrado que no se descifra en la página, cambia el modo y el relleno para ajustarte a la especificación, y luego verifica que la longitud del IV, la longitud de la clave y la codificación de entrada coincidan antes de modificar el código de la aplicación. Las causas más frecuentes incluyen AES-CBC con PKCS#7 frente a ZeroPadding, o AES-GCM donde el servicio receptor espera que la etiqueta de autenticación de 16 bytes vaya después del IV+cifrado en lugar de separada.
Demostrar el manejo de la etiqueta de autenticación GCMCifra con GCM, captura la etiqueta de autenticación de 16 bytes que la página añade después del texto cifrado, y comprueba que el servicio receptor rechaza el cifrado cuando la etiqueta se trunca o se reordena. Los errores en el manejo de la etiqueta suelen manifestarse como un descifrado silencioso en lugar de una excepción, por lo que probar aquí el comportamiento AEAD permite detectarlos antes de llegar a la integración.

Principio técnico

AES (Advanced Encryption Standard) fue publicado por NIST como FIPS 197 en noviembre de 2001 tras una competencia pública de cinco años iniciada en 1997 con 15 candidatos. El ganador fue Rijndael, diseñado por los criptógrafos belgas Joan Daemen y Vincent Rijmen, superando a finalistas como Twofish, Serpent, RC6 y Mars. AES reemplazó a DES (FIPS 46, retirado en 2005) y es actualmente el cifrado de bloques simétrico más desplegado del mundo: está presente en TLS 1.2/1.3, IPsec, BitLocker, FileVault, el `aes-256-gcm` por defecto de OpenSSL, dm-crypt del kernel de Linux, CryptoKit de Apple y Keystore de Android. La NSA aprobó AES-256 para TOP SECRET en 2003 (suite A), convirtiendo a AES en el primer cifrado públicamente disponible autorizado para la clasificación más alta de EE. UU. El tamaño de bloque es fijo de 128 bits (16 bytes); los tamaños de clave son 128, 192 o 256 bits, correspondientes a 10, 12 o 14 rondas. Una ronda (excepto la última) ejecuta cuatro operaciones sobre un estado de 4x4 bytes: SubBytes aplica una S-Box fija de 16x16 (0x63 = 01100011 se encuentra en la fila 6 columna 3 — la S-Box se construye como el inverso multiplicativo en GF(2^8) más una transformación afín para romper la estructura algebraica); ShiftRows rota la fila 0 en 0, la fila 1 en 1, la fila 2 en 2 y la fila 3 en 3 bytes; MixColumns multiplica cada columna por una matriz MDS circulante fija sobre GF(2^8) (el polinomio 0x03 * x en forma matricial); AddRoundKey aplica XOR con la subclave de ronda. La ronda final omite MixColumns. Las claves de ronda provienen del programa de claves Rijndael: 11/13/15 claves de ronda de 128 bits cada una, generadas mediante RotWord (rotación a la izquierda de 1 byte), SubWord (aplicar S-Box) y XOR con Rcon[i] = [0x01, 0x02, 0x04, ..., 0x80, 0x1b, 0x36] *2^(i-1) sobre GF(2^8). La biblioteca `aes-js` de la página ejecuta los cuatro pasos en JavaScript puro y es compatible a nivel de bytes con libcrypto de OpenSSL. Se exponen cinco modos de bloque. ECB cifra cada bloque de 16 bytes de forma independiente: bloques de texto plano idénticos producen bloques de texto cifrado idénticos, filtrando la estructura (la famosa imagen del pingüino de ECB sobrevive al cifrado porque el patrón de píxeles sobrevive). CBC aplica XOR a cada bloque de texto plano con el bloque de texto cifrado anterior antes de cifrar; el primer bloque aplica XOR con un IV. CTR convierte AES en un cifrado de flujo cifrando un contador incremental (nonce || contador, ambas mitades de 64 bits de un bloque de 128 bits) y aplicando XOR al flujo de claves con el texto plano — admite acceso aleatorio y cifrado paralelo. GCM es CTR más GHASH (un autenticador de hash universal sobre GF(2^128)), produciendo una etiqueta de autenticación de 16 bytes añadida después del texto cifrado. GCM es el AEAD por defecto en TLS 1.3 (RFC 8446) y en la mayoría de APIs modernas (Node `crypto.createCipheriv('aes-256-gcm', ...)`). CFB y OFB son modos de cifrado de flujo más antiguos conservados por compatibilidad. La trampa del IV es el error de producción más común. GCM con un IV de 96 bits (12 bytes) es la configuración recomendada por NIST (RFC 5288, NIST SP 800-38D §5.2.1.1): el IV de 12 bytes se trata como un contador y GHASH se calcula sobre J0 = IV || 0x00000001. Reutilizar un IV bajo la misma clave en modo CTR filtra el XOR del texto plano (C1 XOR C2 = P1 XOR P2 — un solo ataque de texto plano elegido recupera ambos mensajes). Reutilizar un IV en GCM es peor: un atacante puede recuperar la subclave de autenticación H y falsificar etiquetas para mensajes arbitrarios (el ataque está en Joux 2006 y es la razón por la que NIST prohibió los IV aleatorios de 96 bits sin unicidad estricta). La página genera IVs de 12 bytes con `crypto.getRandomValues(new Uint8Array(12))` para GCM e IVs de 16 bytes para CBC/CFB/OFB, y el botón de clave aleatoria usa el mismo CSPRNG para que cada cifrado comience con material fresco. Esta herramienta ejecuta el cifrado y descifrado AES íntegramente en el navegador con aes-js (implementación AES en JavaScript puro). No existe una ruta alternativa por Web Crypto / SubtleCrypto: todas las operaciones pasan por aes-js sin importar el tamaño del payload.

  • AES es FIPS 197 (2001), seleccionado mediante una competencia abierta de NIST con 15 candidatos; Rijndael superó a Twofish, Serpent, RC6 y Mars. El tamaño de bloque es siempre 128 bits; los tamaños de clave 128/192/256 bits ejecutan 10/12/14 rondas. La página soporta los tres mediante los constructores AES_128, AES_192 y AES_256 de aes-js.
  • La función de ronda de cuatro pasos: SubBytes (una S-Box de 256 bytes que es el inverso en GF(2^8) más transformación afín), ShiftRows (filas desplazadas 0/1/2/3 bytes), MixColumns (multiplicación matricial MDS sobre GF(2^8) con el polinomio 0x03), AddRoundKey (XOR con clave de ronda). La ronda final omite MixColumns. Mismo algoritmo, misma clave = mismo texto cifrado — AES es determinista.
  • ECB es inseguro porque bloques de texto plano idénticos producen bloques de texto cifrado idénticos (la famosa imagen del 'pingüino de ECB' conserva su silueta). CBC es el clásico seguro; CTR añade paralelismo; GCM añade autenticación y es el predeterminado en TLS 1.3 (RFC 8446). CFB y OFB son modos de cifrado de flujo conservados por compatibilidad con sistemas heredados.
  • Relleno PKCS#7: falta 1 byte → 15 bytes de 0x0f + 1 byte de 0x10; faltan 2 bytes → 14 de 0x0e + 2 de 0x0f, etc. El último byte indica la longitud del relleno, por lo que la eliminación del relleno es inequívoca. Los modos de flujo (CTR/CFB/OFB/GCM) omiten el relleno por completo. ZeroPadding es ambigüo cuando los datos terminan con 0x00 — no lo uses.
  • GCM es AEAD: texto cifrado más una etiqueta de autenticación de 16 bytes, calculada mediante GHASH sobre GF(2^128) usando H = AES_K(0^128). Los AAD (datos adicionales autenticados) cubren cabeceras sin cifrarlas. El IV de 96 bits (RFC 5288) se trata como un contador; los IVs de 128 bits pasan por un GHASH para derivar J0 — misma seguridad, ligeramente más lento.
  • La reutilización de IV es catastrófica. La reutilización de IV en CTR filtra P1 XOR P2 (pad de dos usos). La reutilización de IV en GCM (Joux 2006) permite a un atacante recuperar H y falsificar etiquetas. La página genera IVs con `crypto.getRandomValues` (un CSPRNG), nunca los reutiliza dentro de una sesión y antepone el IV al texto cifrado para que el lado de descifrado pueda recuperarlo sin estado fuera de banda.
  • Generación de clave AES: el botón de clave aleatoria de esta herramienta usa `crypto.getRandomValues` (CSPRNG del navegador). El cómputo de las rondas AES se ejecuta mediante aes-js, una implementación en JavaScript puro que es byte-compatible con libcrypto de OpenSSL bajo los mismos ajustes de clave, IV y padding.
  • Realidad de canales laterales: el AES en JS puro no es de tiempo constante (indexar en la matriz S-Box filtra tiempos). El AES de Web Crypto corre en código nativo y es de tiempo constante. Para cargas de trabajo críticas (HSM, KDFs del lado del servidor) prefiere la ruta nativa; para una herramienta de aprendizaje en el navegador, aes-js es adecuado porque la entrada ya está en la memoria de la página. Ruta de migración: SHA-1 → SHA-256 para hashes, DES → AES para cifrados, ECB → GCM para modos.

Ejemplos

Cifrado AES-128-CBC

Texto plano: Hello, World!
Clave:       0123456789abcdef0123456789abcdef (32 hex = 128 bits)
IV:          fedcba9876543210fedcba9876543210 (32 hex = 128 bits)
Modo:        CBC / PKCS#7 / 128 bits

La página produce el texto cifrado (Base64 y Hex) en el panel de
salida. Haz clic en 'Copiar' para capturar el valor, o 'Intercambiar'
para descifrarlo. El relleno PKCS#7 añade 3 bytes (0x03 0x03 0x03)
para que el texto plano rellenado complete un bloque AES.

FIPS: FIPS 197 define AES; NIST SP 800-38A define el modo CBC

Cifrado autenticado AES-256-GCM

Texto plano: sensitive data payload
Clave:       6f8a3b2c1d9e7f5a4b8c0d2e1f3a5b7c9d1e3f5a7b9c1d3e5f7a9b1c3d5e7f9a (64 hex = 256 bits)
IV:          1a2b3c4d5e6f708192a3b4c5 (24 hex = 12 bytes, longitud recomendada para GCM)
Modo:        GCM / NoPadding / 256 bits / AAD vacío

Formato de salida: IV (12B) || Texto cifrado || AuthTag (16B)

FIPS: NIST SP 800-38D define el modo GCM; el IV de 96 bits se trata como un contador

AES-128-ECB (vector de prueba del Apéndice B de FIPS 197)

Clave:       2b7e151628aed2a6abf7158809cf4f3c (128 bits)
Texto plano: 3243f6a8885a308d313198a2e0370734
Texto cifrado (Hex): 3925841d02dc09fbdc118597196a0b32

Modo:        ECB / 128 bits

Nota: ECB cifra cada bloque de 16 bytes de forma independiente. Bloques
de texto plano idénticos siempre producen bloques de texto cifrado idénticos.
FIPS: el Apéndice B de FIPS 197 proporciona este vector de prueba canónico

Comparación de seguridad de los modos AES

ECB:  Sin IV, determinista, expone patrones - NUNCA usar en producción
CBC:  IV aleatorio, descifrado paralelo solo, requiere HMAC para integridad
CTR:  IV de contador, cifrado/descifrado paralelo, requiere MAC
GCM:  IV aleatorio, paralelizable, etiqueta de autenticación integrada

Para nuevos sistemas, prefiere AES-256-GCM:
- la clave de 256 bits resiste ataques cuánticos (algoritmo de Grover)
- GCM proporciona confidencialidad e integridad en una sola operación
- TLS 1.3 exige cifrados AEAD como AES-GCM

NIST: NIST SP 800-38A/D documenta todos estos modos

Preguntas frecuentes

¿Qué es AES y qué tamaños de clave admite?

AES (Advanced Encryption Standard, FIPS 197) es el cifrado simétrico que protege la mayor parte de HTTPS, Wi-Fi WPA2 y el cifrado de disco modernos. La página admite claves de 128, 192 y 256 bits. AES-128 es rápido y seguro para casi todos los usos; elige AES-256 solo si necesitas resistencia a largo plazo frente al criptoanálisis cuántico futuro.

¿Qué modo debo usar: ECB, CBC, CFB, OFB, CTR o GCM?

ECB es inseguro salvo para vectores de prueba de un solo bloque (filtra patrones). CBC y CTR solo aportan confidencialidad y necesitan un MAC aparte. GCM es el estándar moderno: autentica el texto cifrado además de cifrarlo, y es lo que usa HTTPS. Elige GCM salvo que necesites interoperar con un sistema heredado.

¿Qué relleno (padding) debo usar?

PKCS#7 (también llamado PKCS#5) es el relleno estándar para los modos ECB y CBC. CTR, CFB, OFB y GCM son modos tipo flujo y no necesitan relleno: la página fuerza 'NoPadding' en esos casos. Si el descifrado falla con 'bad padding', la causa más habitual es un desajuste de clave, IV o relleno entre los dos extremos.

¿Por qué el mismo texto produce un cifrado distinto cada vez?

Los modos distintos de ECB usan un IV (vector de inicialización) que debe ser aleatorio en cada cifrado. Mismo texto plano + misma clave + IV distinto → texto cifrado distinto. El IV no es secreto (puedes anteponerlo al cifrado), pero reutilizar un IV con la misma clave en CTR o GCM es catastrófico y rompe el cifrado.

¿Es AES seguro frente a la computación cuántica?

La seguridad efectiva de AES-128 cae a unos 64 bits frente al algoritmo de Grover en una computadora cuántica suficientemente grande; AES-256 cae a 128 bits. Por tanto, AES-256 es la opción conservadora para datos que deban permanecer secretos durante décadas. AES simétrico se ve mucho menos afectado por lo cuántico que RSA/ECC.

¿El cifrado se hace en mi navegador?

Sí. La página usa la biblioteca aes-js (implementación AES en JavaScript puro) que se ejecuta localmente en tu navegador. El texto plano, las claves y los IV nunca salen del dispositivo. Puedes confirmarlo en la pestaña Network.

¿Cómo comparto una clave de forma segura?

Nunca pegues una clave real de producción en una página web, esta incluida. Trata esta herramienta como apoyo de aprendizaje y para validar vectores de prueba. Para un intercambio real de claves usa un esquema asimétrico (RSA-OAEP, ECDH/X25519), una clave derivada de contraseña con PBKDF2/Argon2 más sal, o un KMS gestionado, no 'enviar la clave por chat'.