Cómo cifrar y descifrar texto con DES

Un campo de texto y otro para la contraseña: pulsa Cifrar para convertir el texto en un contenedor con sal al estilo OpenSSL, o pega un texto cifrado DES existente y pulsa Descifrar para leerlo. El resultado aparece debajo de los botones.

Todo se ejecuta en la página con CryptoJS, así que el texto y la contraseña no se suben a ningún servidor. DES es un cifrado de 56 bits de los años 70, así que esta página sirve para leer y reproducir datos DES antiguos, no para proteger secretos nuevos.

  1. Pega en el campo superior el texto que quieres cifrar o un texto cifrado DES existente que empiece por U2FsdGVkX1.
  2. Escribe la contraseña en el campo de clave. La misma contraseña hará falta después para leer el resultado; no se guarda en ningún sitio.
  3. Pulsa Cifrar. La salida es Base64: el marcador Salted__, ocho bytes de sal aleatorios y después el texto cifrado.
  4. Para leer un texto cifrado, pégalo en el mismo campo, mantén la contraseña y pulsa Descifrar.

Qué es exactamente el resultado

El contenedor con sal y la sal aleatoria

La salida es el contenedor que producen CryptoJS y openssl enc: los ocho bytes Salted__ (U2FsdGVkX1 en Base64), ocho bytes de sal aleatorios y el texto cifrado. DES es un cifrado por bloques de 8 bytes, en modo CBC con relleno PKCS#7, así que el último bloque añade entre 1 y 8 bytes: entradas de 2 y de 3 bytes acaban ambas en contenedores de 24 bytes.

La sal es aleatoria en cada ejecución, así que el mismo texto con la misma contraseña produce una cadena distinta cada vez; que saliera igual sería un error.

Abrir el resultado con OpenSSL

La clave y el IV se derivan de la contraseña y la sal con EVP_BytesToKey basado en MD5, la misma derivación que usa openssl enc con -md md5. Un contenedor de esta página se descifra con openssl enc -d -des-cbc -md md5 -a -k "contraseña", y el texto cifrado que genera ese comando de OpenSSL se puede pegar de vuelta en la página: ambas direcciones están comprobadas.

DES usa una clave de 56 bits y OpenSSL ya avisa de que esta derivación está obsoleta; la página la mantiene a propósito porque es la que usan los datos DES existentes.

Fallos y lo que un resultado no demuestra

Una contraseña incorrecta, un texto que no es un contenedor y un texto cifrado alterado fallan la comprobación de relleno: la página vacía la salida y muestra un aviso en lugar de dejar el resultado anterior. Un campo vacío o una contraseña vacía se rechazan igual, antes de ejecutar nada.

El contenedor no lleva MAC ni etiqueta de autenticación, así que un valor descifrado son datos, no una prueba de autenticidad. Usa DES aquí solo para leer o reproducir datos antiguos, y un cifrado autenticado moderno para lo nuevo.

Herramientas recientes: