解密Crypto-JS提供数字十六进制输出而不是原始明文字符串

Roy*_*ley 5 javascript cryptojs

我使用来自Google代码中Crypto-JS源站点的示例组合了一个简单的测试:

在页眉中:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
Run Code Online (Sandbox Code Playgroud)

在Javascript函数中:

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

alert('encrypted: '+encrypted+'  decrypted: '+decrypted);
Run Code Online (Sandbox Code Playgroud)

但输出是:

encrypted: U2FsdGVkX19hsNqFBS5xcUoVBCu/hPHepEwZchqnUVU=
decrypted: 4d657373616765
Run Code Online (Sandbox Code Playgroud)

解密输出的图像

我错过了什么?

Kyl*_*yle 6

decrypted.toString(CryptoJS.enc.Utf8) // "Message"
Run Code Online (Sandbox Code Playgroud)

请参阅https://code.google.com/p/crypto-js/#The_Hasher_Output

你得到的哈希值还不是字符串.它是一个WordArray对象.在字符串上下文中使用WordArray对象时,它会自动转换为十六进制字符串.

您可以通过显式调用toString方法并传递编码器将WordArray对象转换为其他 格式.