【发布时间】:2015-04-10 17:19:57
【问题描述】:
美好的一天。我想使用 nodejs 模块加密来解码以前编码的字符串。字符串是用 AES 256 ECB 编码的,我有它作为十六进制。我所有的尝试几乎什么都没做,只是有时我得到的是空字符串而不是错误。我只“需要”加密,不需要 open-ssl。
十六进制:820D4DA01CE75046C399CA314C5428C6AF8D69C6573B4DE5A6942A5277936F56
密钥:7y05R9qwKaIKgIHh4vAw19X1zuknR21Y
这是我的 nodejs 代码。
var algorithm = 'aes-256-ecb',
password = '7y05R9qwKaIKgIHh4vAw19X1zuknR21Y',
encString = '820D4DA01CE75046C399CA314C5428C6AF8D69C6573B4DE5A6942A5277936F56'
var decipher = crypto.createDecipher(algorithm,password);
var dec = decipher.update(encString,'hex','utf8');
dec += decipher.final('utf8');
console.log(dec);
我有这个错误。
Error: error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt.
需要你的帮助。
更新
经过几个小时和 Maarten Bodewes 和 this topic 的无价建议,这是可行的解决方案。
var encString=req.query.d;
console.log(encString);
var algorithm = 'aes-256-ecb',
password = new Buffer('7y05R9qwKaIKgIHh4vAw19X1zuknR21Y', 'binary');
var decipher=crypto.createDecipheriv(algorithm, password.toString('binary'), '');
decipher.setAutoPadding(false);
var dec = decipher.update(encString,'hex','utf8');
dec += decipher.final('utf8');
console.log(dec);
【问题讨论】:
-
不要在问题中发布解决方案。您可以自己发布答案。
-
@ArtjomB。你当然是对的。在这种情况下,尽管对于问题的本地化部分,它似乎主要是对我的回答的一种锻炼。就我个人而言,我更喜欢有人根据我的建议发布答案并接受它:) BadVolt,另一种选择是将代码编辑到 answer 而不是问题中,以证明答案有效。很高兴你解决了...
标签: node.js encryption cryptography aes