我对nodejs相对较新,而对加密模块则相对较新,所以我犯了一些我不明白的明显错误。以下是用于加密和解密由php base64_encode / openssl_encrypt函数生成的字符串的代码。项目所有者希望保留php代码,因此无法更改整个方法。
解密工作完美,但是重新加密会产生错误的结果。感谢您的帮助!
var str='WmE0Ui9aaU1sOG00aGFhVjhHNXlEZz09';
var key=crypto.createHash('sha256').update(password).digest('hex').substr(0,32);
var iv=crypto.createHash('sha256').update(randomiv).digest('hex').substr(0,16);
var decipher=crypto.createDecipheriv('AES-256-CBC',key,iv);
str=Buffer.from(str,'utf8').toString('base64');
str=decipher.update(str,'utf8','base64')+decipher.final('base64');
console.log(str) // 'hey you';
var cipher=crypto.createCipheriv('AES-256-CBC',key,iv);
str=Buffer.from(str,'base64').toString('utf8');
str=cipher.update(str,'base64','utf8')+cipher.final('utf8');
console.log(str) // 'x7YYqnnw4EiCBvq/l1+WTQ=='