如何使用 Javascript 使用已知的 KEY 和 IV 解密 AES?
How to decrypt AES with a known KEY and IV using Javascript?
我正在尝试使用 https://code.google.com/p/crypto-js/ 学习 CryptoJS
它展示了如何使用 AES 进行加密,但没有展示如何使用 KEY 和 IV 进行解密。我在看下面的代码。
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
我试过下面的代码:
var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv });
但是,它给了我错误的纯文本。有人知道我做错了什么吗?
我收到的输出是:
4d657373616765
正确的纯文本显然应该是:
Message
我是不是误会了什么?
ASCII 码;-) http://www.italysoft.com/utility/converters/asciifull.gif
输出为二进制 ASCII 字符。
4d = M
65 = e
等...
正如hotips所说,它是ASCII的十六进制,CryptoJS有内置的编码器。您可以这样做将其字符串化为 Utf8:
var utf8Decrypted = CryptoJS.enc.Utf8.stringify(decrypted);
对于其他编码器,请参阅:
我正在尝试使用 https://code.google.com/p/crypto-js/ 学习 CryptoJS 它展示了如何使用 AES 进行加密,但没有展示如何使用 KEY 和 IV 进行解密。我在看下面的代码。
<script src="http://crypto-js.googlecode.com/svn/tags/3.1.2/build/rollups/aes.js"></script>
<script>
var key = CryptoJS.enc.Hex.parse('000102030405060708090a0b0c0d0e0f');
var iv = CryptoJS.enc.Hex.parse('101112131415161718191a1b1c1d1e1f');
var encrypted = CryptoJS.AES.encrypt("Message", key, { iv: iv });
我试过下面的代码:
var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv });
但是,它给了我错误的纯文本。有人知道我做错了什么吗?
我收到的输出是:
4d657373616765
正确的纯文本显然应该是:
Message
我是不是误会了什么?
ASCII 码;-) http://www.italysoft.com/utility/converters/asciifull.gif
输出为二进制 ASCII 字符。
4d = M 65 = e
等...
正如hotips所说,它是ASCII的十六进制,CryptoJS有内置的编码器。您可以这样做将其字符串化为 Utf8:
var utf8Decrypted = CryptoJS.enc.Utf8.stringify(decrypted);
对于其他编码器,请参阅: