以下 node.js 代码尝试在 ECB 模式下使用 AES 128 创建密码,初始化向量 (IV) 填充为 0 字节。<< rant >>我知道应该不惜一切代价避免使用 ECB 模式进行加密,但它仍然需要支持二战前构建的遗留系统(当 ECB 模式加密的危险首次被发现时)。 <</咆哮>>。
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)。
这是一个错误还是我做错了什么?