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

Stu*_*ter 3 cryptography aes node.js initialization-vector

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

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);
}
Run Code Online (Sandbox Code Playgroud)

当调用createCipheriv(或createDeciperiv)时,node.js代码抛出"无效的IV长度".

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

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

Stu*_*ter 5

Node.js团队回复了我.

"ECB不使用IV,所以你应该只传递一个零长度的缓冲区"

let ivBuffer = Buffer.alloc(0);
Run Code Online (Sandbox Code Playgroud)

奇怪的是,开发人员必须弄清楚传递0长度的缓冲区而不是传递任何参数.我希望他们至少更新文档.