Herramientas
Guías

Cifrado / Descifrado AES

Cifrado

Cifrado simétrico AES-GCM con clave derivada por PBKDF2, sal y IV aleatorios. Basado en contraseña.

100 % del lado del cliente Sin backend
Entrada
Salida
En esta página

¿Qué es el cifrado simétrico?#

El cifrado simétrico usa un secreto compartido tanto para cerrar como para abrir. Le das texto plano y una contraseña; devuelve un blob revuelto que nadie puede leer sin esa misma contraseña. Es la herramienta adecuada siempre que quieras confidencialidad —ocultar lo que dice algo—, a diferencia de un hash (que solo prueba integridad) o de HMAC (que prueba autenticidad).

Esta página usa AES-GCM, el modo de cifrado autenticado recomendado para código nuevo. «Autenticado» es la palabra clave: GCM no solo revuelve tu texto, también teje una etiqueta a prueba de manipulaciones. Si alguien cambia un solo bit del texto cifrado, el descifrado falla de forma ruidosa en lugar de devolver basura en silencio. La clave se deriva de tu contraseña con PBKDF2 sobre SHA-256, usando una sal aleatoria nueva y 100 000 iteraciones por defecto, así una contraseña algo débil sigue siendo cara de romper por fuerza bruta sin conexión.

Todo se ejecuta en el navegador a través de Web Crypto. No hay servidor, ni depósito de claves, ni llamada de red: si pierdes la contraseña, el texto cifrado es irrecuperable, por diseño.

Cómo usarlo#

  1. Elige un modo: Cifrar (texto plano → texto cifrado) o Descifrar (texto cifrado → texto plano).
  2. Escribe la contraseña. Es el único secreto compartido; quien la descifre después debe teclear exactamente la misma.
  3. Elige las opciones:
    • Tamaño de clave: 128 / 192 / 256 (por defecto 256). 256 es la base moderna; las otras existen para coincidir con sistemas heredados.
    • Iteraciones: rondas de PBKDF2, por defecto 100 000. Un valor más alto ralentiza el ataque sin conexión, pero también te ralentiza a ti; 100 000 es un suelo razonable hoy.
    • Formato de salida: base64 (compacta, la opción por defecto) o hex.
  4. Pega la entrada en el panel izquierdo. Para cifrar, cualquier texto; para descifrar, el blob que copiaste antes.
  5. Lee la salida a la derecha. La línea de estado te dice si la operación tuvo éxito; una contraseña incorrecta al descifrar muestra un fallo limpio en vez de texto corrupto.

Características principales#

  • Cifrado autenticado AES-GCM. Se detecta la manipulación del texto cifrado: un blob modificado se niega a descifrar en lugar de producir basura plausible.
  • Salida autodescriptiva. La sal, el IV, el tamaño de clave y el conteo de iteraciones van empaquetados en el blob de salida, así el descifrado no necesita nada más que la contraseña. Nunca tienes que recordar ni reenviar esos parámetros por separado.
  • Aleatoriedad por mensaje. Se extrae una sal aleatoria nueva y un IV de 12 bytes nuevo en cada cifrado, así cifrar el mismo texto dos veces produce dos blobs completamente distintos: ambos descifran al mismo texto plano.
  • PBKDF2 ajustable. Sube el conteo de iteraciones para endurecer una contraseña débil frente al ataque sin conexión.
  • Cero subidas. Cifrado y descifrado son ambos locales; la contraseña y el texto plano nunca salen de la página.

Ejemplo detallado#

Cifra el mensaje launch at dawn con la contraseña correct-horse-battery-staple, tamaño de clave 256, iteraciones 100000, codificación base64. La salida de abajo es un blob real y verificable: pégalo tal cual en Descifrar con la misma contraseña y launch at dawn regresa:

AQEAAAGGoPVkwA9k0rjoWLw8GXnalIvQoBTP+awUg4DczQwTK5nxMwUaEaQ35WTQbWK8gLMkvuDf+/ndr04f8fw=

(Cifrar el mismo texto de nuevo producirá un blob distinto, porque la sal y el IV son aleatorios nuevos en cada ejecución.) Ese blob no es solo texto cifrado. Es un pequeño sobre dispuesto así:

version(1) | keyBits(2) | iterations(4) | salt(16) | IV(12) | ciphertext+tag

Cambia a Descifrar, pega el blob anterior en la entrada, escribe la misma contraseña, y el panel derecho devuelve launch at dawn. Ahora reintenta el descifrado con una contraseña ligeramente distinta: la etiqueta de autenticación de GCM no se validará y la línea de estado reportará un fallo en lugar de entregarte texto medio corrupto. Ese fallo limpio es justo lo que te compra el cifrado autenticado frente al viejo modo CBC sin autenticar.

Preguntas frecuentes#

¿Y si olvido la contraseña?#

Los datos se han perdido. PBKDF2 y AES están diseñados para que la contraseña no pueda recuperarse del blob: no hay ruta de «contraseña olvidada», ni trampilla, ni servidor que pueda resetearla. Trata la contraseña como el único punto de fallo, y considera guardar las contraseñas críticas en un gestor de contraseñas.

¿Por qué cifrar el mismo texto dos veces da una salida distinta?#

Porque se genera una sal aleatoria nueva y un IV de 12 bytes nuevo en cada cifrado. Es deliberado: si un texto plano idéntico produjera siempre un texto cifrado idéntico, un atacante podría reconocer mensajes repetidos. La aleatoriedad no afecta al descifrado, porque la sal y el IV viajan dentro del blob y se leen de vuelta automáticamente.

¿Cuántas iteraciones debo poner?#

100 000 es un suelo razonable para uso interactivo. Si proteges algo de mucho valor y toleras una breve espera, 600 000 añade un coste adicional significativo al atacante sin ser doloroso para ti. El coste se paga una vez por cifrado o descifrado, no por byte de datos.

¿Es seguro para archivos grandes?#

Gestiona cualquier texto que puedas pegar, pero es una herramienta de página, no un cifrador de archivos por flujo. Para payloads muy grandes, un esquema híbrido (AES para los datos, RSA o envoltura de clave para la clave AES) es el patrón estándar, y AES-GCM es exactamente la mitad simétrica de ese patrón.