我想使用像AES-GCM这样的认证加密方案对Node.js中的一些数据进行加密。
如果我运行以下示例代码
app.get("/test", function(req,res) {
var key = "12345678901234567890123456789012";
var iv = "123456789012";
var cipher = crypto.createCipheriv("id-aes256-GCM",key.toString("binary"),iv.toString("binary"));
var decipher = crypto.createDecipheriv("id-aes256-GCM",key.toString("binary"),iv.toString("binary"));
console.log(decipher.update(cipher.update("bla")));
console.log(decipher.update(cipher.final()));
console.log(decipher.final());
});我没有得到控制台的输出,但是错误消息"TypeError: DecipherFinal fail“。如果我使用cipher AES-256-CTR而不是"id-aes256-GCM",此代码工作正常,并在控制台上打印"bla“。
我做错了什么?
编辑:
进一步研究表明,cipher.update("bla")返回“-”(单个character...strange),而cipher.final()返回空字符串。我认为这不可能是一个正确的密文,它至少应该有明文的大小…
https://stackoverflow.com/questions/11259534
复制相似问题