首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js加密: IV长度无效

Node.js加密: IV长度无效
EN

Stack Overflow用户
提问于 2016-12-14 11:50:29
回答 1查看 6.4K关注 0票数 4

下面的node.js代码试图在ECB模式下使用AES128创建一个密码,其中初始化向量(IV)填充为0字节。<< rant >>我知道应该不惜一切代价避免使用ECB模式进行加密,但它仍然需要支持二战前构建的遗留系统(当在ECB模式下加密的危险首次被发现时).<< /rant >>。

代码语言:javascript
复制
let keyBuffer = Buffer.from("DoNotUseUTF8Keys",'utf8');
let ivBuffer = Buffer.alloc(16); // 16 bytes set to 0
//try {
try {
  let cipher = createCipheriv("AES-128-ECB", keyBuffer, ivBuffer);
} catch (e)
{
  console.log(e.message);
}

当调用createCipheriv (或createDeciperiv)时,node.js代码抛出"Invalid IV length“。

对于128位(16字节)密码,AES应具有16字节的初始化向量(IV)。

这是一个bug,还是我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2016-12-14 13:24:49

Node.js团队给我回了电话

"ECB不使用IV,因此您应该只传递零长度的缓冲区。“

代码语言:javascript
复制
let ivBuffer = Buffer.alloc(0);

似乎奇怪的是,开发人员必须计算出传递一个0长度的缓冲区,而不是不传递任何参数。我希望他们至少能更新一下文档。

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

https://stackoverflow.com/questions/41134562

复制
相关文章

相似问题

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