首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将id-aes256-GCM与Node.JS加密一起使用?"TypeError: DecipherFinal失败“

如何将id-aes256-GCM与Node.JS加密一起使用?"TypeError: DecipherFinal失败“
EN

Stack Overflow用户
提问于 2012-06-29 17:44:59
回答 1查看 3.6K关注 0票数 17

我想使用像AES-GCM这样的认证加密方案对Node.js中的一些数据进行加密。

如果我运行以下示例代码

代码语言:javascript
复制
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()返回空字符串。我认为这不可能是一个正确的密文,它至少应该有明文的大小…

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-14 16:34:14

OpenSSL中的GCM模式运行良好。它也已经在其他实现中进行了测试。我知道的一个事实是,PolarSSL SSL library有自己的GCM实现,PolarSSL可以与OpenSSL一起很好地工作。

AES的GCM加密模式需要特定的GCM相关参数。当前NodeJS接口无法向OpenSSL提供这些值。因此,调用会失败,但不会出现干净的错误。(这与其说是NodeJS问题,不如说是OpenSSL问题)。

(StevenLoomen也在评论中指出了原因,但我希望每个人都能看到答案)

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11259534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档