1

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

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

最后一行执行失败,没有显示任何错误。“类型错误:错误:00000000:lib(0):func(0):reason(0)”

在进一步调查中,我知道一旦我们完成了 cipher.final(),我们就不能使用密码了。但是,如果我不早点这样做(在 data1 的加密期间),在“data1 的加密格式”的解密期间,它将失败,因为 cipher.final 返回任何剩余的加密内容,这些内容附加有原始加密字符串。

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

4

0 回答 0