下面的node.js代码试图在ECB模式下使用AES128创建一个密码,其中初始化向量(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);
}当调用createCipheriv (或createDeciperiv)时,node.js代码抛出"Invalid IV length“。
对于128位(16字节)密码,AES应具有16字节的初始化向量(IV)。
这是一个bug,还是我做错了什么?
发布于 2016-12-14 13:24:49
Node.js团队给我回了电话
"ECB不使用IV,因此您应该只传递零长度的缓冲区。“
let ivBuffer = Buffer.alloc(0);似乎奇怪的是,开发人员必须计算出传递一个0长度的缓冲区,而不是不传递任何参数。我希望他们至少能更新一下文档。
https://stackoverflow.com/questions/41134562
复制相似问题