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

我使用Crypto-JS source site at Google code中的示例组合了一个简单的测试:

在页眉中:

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

在Javascript函数中:

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

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

但输出是:

encrypted: U2FsdGVkX19hsNqFBS5xcUoVBCu/hPHepEwZchqnUVU=
decrypted: 4d657373616765

我错过了什么?

解决方法:

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

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

The hash you get back isn’t a string yet. It’s a WordArray object. When you use a WordArray object in a string context, it’s automatically converted to a hex string.

You can convert a WordArray object to other formats by explicitly calling the toString method and passing an encoder.

上一篇:PHP将mcrypt转换为openssl


下一篇:javascript – 如何加密HTML5网络存储?