Búsqueda de sitios web

javascript - Descifrar en Crypto-JS da salida hexadecimal numérica en lugar de la cadena de texto original


Preparé una prueba sencilla usando el ejemplo del sitio de Crypto-JS en Google Code:

En el encabezado de la página:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>

En una función de Javascript:

var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");
var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");

alert('encrypted: '+encrypted+'  decrypted: '+decrypted);

pero la salida es:

encrypted: U2FsdGVkX19hsNqFBS5xcUoVBCu/hPHepEwZchqnUVU=
decrypted: 4d657373616765

¿Qué me estoy perdiendo?

Respuesta #1

decrypted.toString(CryptoJS.enc.Utf8) // "Message"

Vea https://code.google.com/p/crypto-js/#The_Hasher_Output

El hash que obtienes de vuelta aún no es una cadena. Es un objeto WordArray. Cuando usas un objeto WordArray en un contexto de cadena, se convierte automáticamente en una cadena hex.

Puedes convertir un objeto WordArray a otros formatos llamando explícitamente al método toString y pasando un codificador.