AES-256-CBC nodejs шифрование не работает - PullRequest
0 голосов
/ 02 июля 2019

Я относительно новичок в 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=='
...