Toolonit
  1. Inicio
  2. Cifrado
  3. Cifrar / descifrar
  4. AES

Cifrado y descifrado AES

Cifra y descifra texto con AES-128, 192 o 256: GCM, CBC, CTR y otros modos.

Cifrar con

La necesitarás de nuevo para descifrar. Nada de lo que escribes sale de esta página.

Iteraciones de PBKDF2

El valor predeterminado de OpenSSL es 10.000. Sirve cualquier número: cuantas más, más lenta de adivinar es la contraseña; para descifrar hace falta el mismo número.

Modo

La opción habitual con OpenSSL. Necesita un IV; rellena hasta completar bloques.

Tamaño de clave
Salida en
Lo mismo con OpenSSL
openssl enc -aes-256-cbc -pbkdf2 -iter 10000 -a -A

OpenSSL te pide la contraseña; pega el texto en él o añade archivos con -in y -out.

Cifra texto con AES-256 —o con AES-128 o AES-192— usando una contraseña o tu propia clave e IV, o pega un texto cifrado con AES en Base64 o hexadecimal para descifrarlo. Con contraseña, el resultado tiene el mismo formato que openssl enc -pbkdf2: la cabecera Salted__, una sal aleatoria de 8 bytes y el texto cifrado, con la clave y el IV derivados mediante PBKDF2-HMAC-SHA256. Los valores predeterminados, AES-256 en modo CBC con relleno PKCS#7 y salida en Base64, coinciden con openssl enc -aes-256-cbc -pbkdf2 -a, y GCM, CTR, CFB, OFB y ECB están a un clic. El resultado se actualiza mientras escribes. Todo ocurre en tu navegador, así que tu texto, tu contraseña y tu clave nunca salen de tu dispositivo; es gratis y no requiere registro.

Cómo cifrar y descifrar texto con AES

  1. Elige Cifrar o Descifrar. Escribe el texto que quieres cifrar o pega el texto en Base64 o hexadecimal que quieres descifrar: el formato se detecta automáticamente.
  2. Escribe una contraseña (Generar crea una segura) o cambia a Clave e IV (hex) e introduce o genera una clave y un IV de la longitud indicada.
  3. Elige el tamaño de clave (128, 192 o 256 bits) y el modo. Para descifrar, usa la misma contraseña, el mismo número de iteraciones, el mismo tamaño de clave y el mismo modo con que se cifró el texto.
  4. Copia o descarga el resultado, o pulsa Intercambiar para pasarlo a la entrada e invertir la dirección. En Lo mismo con OpenSSL, la página muestra el comando openssl equivalente, sin tu contraseña.

Funciones

  • AES-128, AES-192 y AES-256 en modo CBC, GCM, CTR, CFB, OFB o ECB
  • Modo contraseña en el formato de openssl enc -pbkdf2: cabecera Salted__, sal aleatoria de 8 bytes, clave e IV derivados con PBKDF2-HMAC-SHA256
  • 10.000 (el valor predeterminado de OpenSSL), 100.000 o 600.000 iteraciones de PBKDF2, o cualquier número hasta 10 millones
  • Modo Clave e IV con tu propia clave e IV en hexadecimal, o aleatorios con Generar
  • AES-GCM detecta una contraseña o clave incorrecta y cualquier cambio en el texto cifrado
  • Relleno PKCS#7, o sin relleno en CBC y ECB
  • Salida en Base64 o hexadecimal; la entrada en Base64 o hexadecimal se reconoce automáticamente
  • El comando openssl enc equivalente para todos los modos excepto GCM

¿Es privado?

Sí. AES se ejecuta en WebAssembly dentro de tu navegador, y la contraseña se convierte en clave con Web Crypto, integrado en el propio navegador. Tu texto, tu contraseña y tu clave nunca se suben ni se guardan, y el comando openssl que muestra la página nunca los incluye.

Preguntas frecuentes

¿Qué modo de AES debo usar?

Para datos nuevos, GCM: además de cifrar, detecta cualquier cambio en el texto y una contraseña incorrecta. Elige CBC, el predeterminado, cuando la otra parte use openssl enc, que no puede leer GCM; elige CTR, CFB u OFB solo para coincidir con un sistema existente. Evita ECB: bloques idénticos de 16 bytes dan una salida idéntica, así que los patrones del texto se siguen viendo.

¿Puedo descifrar el resultado con OpenSSL?

Sí, salvo en GCM. Con los valores predeterminados: echo 'U2FsdGVkX1…' | openssl enc -d -aes-256-cbc -pbkdf2 -iter 10000 -a -A; OpenSSL te pedirá la contraseña. Cambia 256 y cbc por tu tamaño de clave y tu modo (ecb, ctr, cfb, ofb), -iter por tu número de iteraciones, y añade -nopad si desactivaste el relleno; para la salida en hexadecimal, quita -a -A y pasa antes el texto por xxd -r -p. En el modo Clave e IV, usa -K <clave hex> -iv <IV hex> en lugar de -pbkdf2 -iter. openssl enc rechaza GCM (no admite cifrados AEAD), así que un texto en GCM solo se puede leer aquí o desde código.

¿Por qué el resultado es distinto cada vez?

Porque cada cifrado con contraseña elige una sal aleatoria nueva, así que la clave, el IV y toda la salida cambian cada vez, y todas las versiones se descifran en el mismo texto. Es intencionado: nadie puede saber si dos mensajes son iguales. En el modo Clave e IV la salida se repite cuando se repiten la clave y el IV, así que genera un IV nuevo para cada mensaje: reutilizarlo con la misma clave debilita CBC y rompe CTR y GCM.

¿Por qué dice que la contraseña es incorrecta?

Porque algo no coincide: la contraseña, el número de iteraciones, el tamaño de clave, el modo y el relleno deben ser los mismos que se usaron al cifrar, y el texto solo guarda la sal. Un texto que empieza por U2FsdGVkX1 pero se creó con openssl enc sin -pbkdf2, o con CryptoJS y una frase de contraseña, usa una derivación de clave más antigua (EVP_BytesToKey) que esta página no lee: vuelve a cifrarlo con -pbkdf2, o usa el modo Clave e IV si tienes la clave y el IV en bruto.

¿Es seguro el cifrado AES-256?

Sí. AES no tiene ningún ataque práctico, con ningún tamaño de clave; el punto débil es la contraseña. Usa una larga y aleatoria (Generar crea una) y, cuando controles ambos extremos, sube las iteraciones a 600.000, la cifra actual de OWASP para PBKDF2-HMAC-SHA256. Elige GCM si además necesitas saber que el texto no se ha alterado.

Herramientas relacionadas