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).
这是一个错误还是我做错了什么?
Node.js团队回复了我.
"ECB不使用IV,所以你应该只传递一个零长度的缓冲区"
let ivBuffer = Buffer.alloc(0);
Run Code Online (Sandbox Code Playgroud)
奇怪的是,开发人员必须弄清楚传递0长度的缓冲区而不是传递任何参数.我希望他们至少更新文档.
归档时间: |
|
查看次数: |
2879 次 |
最近记录: |