NodeJS AES 256hex解密错误

美好的一天。 我想使用nodejs模块encryption解码以前编码的string。 string是用AES 256 ECB编码的,我把它作为hex。 我所有的尝试几乎没有,只是有时我得到空string,而不是错误。 我'需要'只有encryption,没有开放ssl。

HEX :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. 

需要你的帮助。

UPDATE

经过Maarten Bodewes和这个主题几个小时和无价的build议,这是工作的解决scheme。

 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); 

你将不得不使用createDecipheralgorithm,key和IV参数。 IV可能会被忽略,但是为了确保将其设置为16个零字节。 如果使用两个参数函数,那么将通过基于密码的密钥导出函数(PBKDF)来input密钥。 而用一个不正确的密钥解密当然会导致失败。

如果解密失败,请确保closures填充,并查看所产生的明文是否有意义。