【发布时间】:2016-02-13 02:54:56
【问题描述】:
我必须解密一些 AES 加密的字符串。
示例加密字符串:129212143036071008133136215105140171136216244116
我有一个密钥,以及一个以字节数组格式提供给我的向量 (iv):
键:[ 123, 217, 20, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 115, 222, 209, 241, 24, 175, 144, 175, 53, 196、29、24、23、17、218、131、226、53、209]
向量 (iv): [ 146, 66, 191, 151, 23, 3, 113, 119, 231, 131, 133, 112, 79, 32, 114, 136 ]
我应该能够解密字符串并得到:
正确的输出:testtest
我正在尝试使用 Crypto.js,但找不到使用提供的密钥和向量的方法。我找不到将字节数组转换为十六进制的方法。
var encrypted = '129212143036071008133136215105140171136216244116';
var key = CryptoJS.enc.Hex.parse([ 123, 217, 20, 11, 24, 26, 85, 45, 114, 184, 27, 162, 37, 115, 222, 209, 241, 24, 175, 144, 175, 53, 196, 29, 24, 23, 17, 218, 131, 226, 53, 209 ]);
var iv = CryptoJS.enc.Hex.parse([ 146, 66, 191, 151, 23, 3, 113, 119, 231, 131, 133, 112, 79, 32, 114, 136 ]);
var decrypted = CryptoJS.AES.decrypt(encrypted, key, { iv: iv });
console.log('Output: '+decrypted.toString(CryptoJS.enc.Utf8)); //Should be "testtest"
如果有人能告诉我如何使用密钥和向量与 Crypto.js 或任何其他 js 方法解密示例字符串,我将不胜感激。
非常感谢您的帮助, 亲切的问候
【问题讨论】:
-
请参阅stackoverflow.com/a/311179/152640 或stackoverflow.com/a/9855338/152640 以获得相关问题中的字节数组到十六进制
-
你的密文确实有问题。所有字符都是 0 到 9,所以它可能不是十六进制编码的,因为 AES 密文真的很嘈杂,确实应该有一些字符在 A 到 F 范围内。另外,如果假设 CBC 模式和十六进制编码,则密文长度无效。
标签: javascript encryption hex bytearray cryptojs