我正在试图弄清楚如何将CryptoJS库用于AES,但文档有些缺乏。
我跟着他们的例子,但我似乎无法解码我在PyCrypto编码的东西
我的格式如下:
key = '0f3f0fe38eb5f216cb4ef0649f81d761'
ciphertext = 'Y+gwBI6R37Ko1lQmwZ57gg==FqUSqQ=='
密文有两个组成部分
iv: Y+gwBI6R37Ko1lQmwZ57gg==
encoded message: FqUSqQ==
我尝试运行下面的代码,但它没有用。它在控制台中记录“”。它应该解析为'测试'
var decrypted =CryptoJS.AES.decrypt(ciphertext, key);
console.log( decrypted.toString(CryptoJS.enc.Utf8) );
任何指针都很棒。感谢
答案 0 :(得分:2)
我也遇到了这个问题,不幸的是让pycrypto
与crypto-js
交谈非常棘手。以下是对我有用的组合:
MODE_CFB
与segment_size=128
CryptoJS.lib.CipherParams.create({ ... })
看看适用于我的代码(Python 2.7.x):
https://gist.github.com/marcoslin/8026990
答案 1 :(得分:0)
我没有直接使用CryptoJS的经验,但有多年的其他加密库经验。几乎可以肯定的是,CryptoJS.AES.decrypt需要一种与您正在使用的密文格式不同的密文格式。您的密文是两个独立的Base64编码实体的接口:
Base64(IV)+ Base64(Enc(消息))
如果CryptoJS.AES.decrypt期望将IV指定为密文的一部分(它可能不会),并且完全期望Base64编码的密文输入(它可能不会),那么我会尝试传递:< / p>
Base64((二进制IV)+(二进制Enc(消息)))
看看CryptoJS文档,我对此感到沮丧。但是有一个加密的例子,“手动指定的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 });
</script>
抱歉,我无法提供更多帮助 -