在node中,我使用以下代码获取正确的解密消息:
//npm install --save-dev crypto-js
var CryptoJS = require("crypto-js");
var esp8266_msg = 'IqszviDrXw5juapvVrQ2Eh/H3TqBsPkSOYY25hOQzJck+ZWIg2QsgBqYQv6lWHcdOclvVLOSOouk3PmGfIXv//cURM8UBJkKF83fPawwuxg=';
var esp8266_iv = 'Cqkbb7OxPGoXhk70DjGYjw==';
// The AES encryption/decryption key to be used.
var AESKey = '2B7E151628AED2A6ABF7158809CF4F3C';
var plain_iv = new Buffer( esp8266_iv , 'base64').toString('hex');
var iv = CryptoJS.enc.Hex.parse( plain_iv );
var key= CryptoJS.enc.Hex.parse( AESKey );
console.log("Let's ");
// Decrypt
var bytes = CryptoJS.AES.decrypt( esp8266_msg, key , { iv: iv} );
var plaintext = bytes.toString(CryptoJS.enc.Base64);
var decoded_b64msg = new Buffer(plaintext , 'base64').toString('ascii');
var decoded_msg = new Buffer( decoded_b64msg , 'base64').toString('ascii');
console.log("Decryptedage: ", decoded_msg);
但当我试图用python解密时,我没有得到正确的解码消息。
^{pr2}$我收到解码信息:
"ルᄊ+#ÊZûᆪᄃn*ÿÒá×G1ᄄᄋì;$-#f゚ãᄚk-ìØܳã-トȒ~ヌ8ヘヘ_ᄂ ン?ᄂÑ:ÇäYムü'hユô<`
所以我希望有人能展示一下python是如何做到的。在
你忘了decode the key from Hex和{a2}。在
完整代码:
输出:
^{pr2}$安全考虑因素
静脉注射一定是不可预测的。不要使用静态IV,因为这会使密码具有确定性,因此在语义上不安全。观察密文的攻击者可以确定之前发送相同消息前缀的时间。静脉注射不是秘密的,所以你可以把它和密文一起发送。通常,它只是在密文前面加上一层,然后在解密之前被切掉。在
最好对密文进行身份验证,这样就不会出现padding oracle attack之类的攻击。这可以通过GCM或EAX之类的认证模式来实现,或者使用encrypt-then-MAC方案。在
相关问题 更多 >
编程相关推荐