次の node.js コードは、ECB モードで AES 128 を使用し、0 バイトで満たされた初期化ベクトル (IV) を使用して暗号を作成しようとします。<< 暴言 >> 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) が必要です。
これはバグですか、それとも何か間違っていますか?