Nodejs,Crypto:使用相同的密码加密多个字符串

时间:2018-04-13 11:23:08

标签: node.js encryption cryptojs aes-gcm symmetric-key

我正在尝试使用相同的密码使用代码加密多个字符串

var iv = _crypto.randomBytes(16).slice(0, 12);
var salt = _crypto.randomBytes(64);
var key = _crypto.pbkdf2Sync(symmetricKey, salt, 2145, 32, 'sha512');

var cipher = _crypto.createCipheriv('aes-256-gcm', key,iv);

var a = Buffer.concat([cipher.update("data1", 'utf8'), cipher.final()]);
var b = Buffer.concat([salt, iv, a]).toString('base64');

var c = Buffer.concat([cipher.update("data2", 'utf8'), cipher.final()]);

最后一行的执行失败而没有显示任何错误。 " TypeError:错误:00000000:lib(0):func(0):reason(0)"

在进一步调查时,我发现一旦我们完成了cipher.final(),我们就无法使用密码。但是如果我早些时候(在加密数据1期间)没有做到这一点,那么在解密数据1和#34;的加密格式时,它会失败,因为cipher.final会返回任何剩余的加密内容,这些内容会附加到原始加密字符串。

那么加密多个字符串的最佳方式是什么,或者我应该为所有字符串创建单独的密码?

0 个答案:

没有答案