Javascript Crypto JS中的Decrypt提供数字十六进制输出,而不是原始明文字符串
我使用以下示例进行了一个简单的测试: 在页眉中:Javascript Crypto JS中的Decrypt提供数字十六进制输出,而不是原始明文字符串,javascript,cryptojs,Javascript,Cryptojs,我使用以下示例进行了一个简单的测试: 在页眉中: <script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script> 但结果是: encrypted: U2FsdGVkX19hsNqFBS5xcUoVBCu/hPHepEwZchqnUVU= decrypted: 4d657373616765 我错过了什么 decrypted.toString(Cryp
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
但结果是:
encrypted: U2FsdGVkX19hsNqFBS5xcUoVBCu/hPHepEwZchqnUVU=
decrypted: 4d657373616765
我错过了什么
decrypted.toString(CryptoJS.enc.Utf8) // "Message"
看
你得到的哈希值还不是字符串。它是一个字数组对象。当您在字符串上下文中使用WordArray对象时,它会自动转换为一个十六进制字符串
通过显式调用toString方法并传递编码器,可以将WordArray对象转换为其他格式
仅供参考,输出是明文中每个字符的数字代码点值,表示为两位十六进制数。使用
String.fromCharCode.apply(String,“4d657373616765.match(/.{2}/g).map(函数(d){return parseInt(d,16);}))
观察这一点。库的“文档”当然可以改进。
decrypted.toString(CryptoJS.enc.Utf8) // "Message"