以下node.js代码尝试在ECB模式下使用AES 128创建密码,初始化向量(IV)填充0字节。我知道应该不惜一切代价避免使用ECB模式进行加密,但它仍然需要支持第二次世界大战之前建立的遗留系统(当第一次发现加密ECB模式的危险时)。 < </rant >>。Node.js加密:无效的IV长度
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代码会抛出“无效的IV长度”。
对于128位(16字节)的密码,AES应该有一个16字节的初始化矢量(IV)。
这是一个错误还是我做错了什么?
“二战前修建配套遗留系统”:MEGA.nz使用欧洲央行,因为他们认为它具有更好的性能和文件都加密使用共享密钥文件密钥和共享密钥是完全随机的,所以他们遭受任何危险。另一方面,一些实现缺乏ECB,使得使用它的性能变差。 –