crypto-js aes can't decrypt what it encrypted

房东的猫 提交于 2019-11-26 22:07:12

问题


Hello I'm trying to decrypt a encrypted aes string with crypto-js but it seems like it doesn't work right.

I'm using:

<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
    var encrypted = CryptoJS.AES.encrypt("Message", "Secret Passphrase");

    var decrypted = CryptoJS.AES.decrypt(encrypted, "Secret Passphrase");
</script>

But my results are:

encrypted: U2FsdGVkX19whKq54yOQt3l1erbtEtn/M0qJjAH+E/E=
decrypted: 4d657373616765

My expectation was the it returns back "Message". What am I missing?


回答1:


The return type of all CryptoJS.<blockcipher>.decrypt() functions is a WordArray which is the native representation of binary data in CryptoJS. When you force it to be printed (automatically calling toString()), the binary data that it contains will be Hex encoded.

If you want to have a different encoding, then you need to specify it. Here are some examples:

console.log(decrypted.toString()); // Hex encoded
console.log(decrypted.toString(CryptoJS.enc.Hex)); // Hex encoded
console.log(CryptoJS.enc.Hex.stringify(decrypted)); // Hex encoded

console.log(decrypted.toString(CryptoJS.enc.Utf8)); // UTF-8 encoded
console.log(CryptoJS.enc.Utf8.stringify(decrypted)); // UTF-8 encoded

console.log(decrypted.toString(CryptoJS.enc.Base64)); // Base64 encoded
console.log(CryptoJS.enc.Base64.stringify(decrypted)); // Base64 encoded


来源:https://stackoverflow.com/questions/31418178/crypto-js-aes-cant-decrypt-what-it-encrypted

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!