2

正しいデータ (オンライン デコーダーで検証済み) を持っていることは確かですが、デコーダーからの出力として空の文字列しか得られません。

これは私のJavaScriptです:

var cipher  = CryptoJS.enc.Base64.parse(data.split("--")[0]);
var inv     = CryptoJS.enc.Base64.parse(data.split("--")[1]);

console.log("Ciphertext");
console.log(cipher);                             // as word array
console.log(CryptoJS.enc.Hex.stringify(cipher)); // as hex string
console.log("IV");
console.log(inv);                                // as word array
console.log(CryptoJS.enc.Hex.stringify(inv));    // as hex string

// don't worry, this key won't be used in production ;-)
var key = CryptoJS.enc.Utf8.parse("GzUaLsk7SI9VDja3");
var decrypted = CryptoJS.AES.decrypt(cipher, key, { iv: inv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 });

console.log(decrypted);

decrypted = decrypted.toString(CryptoJS.enc.Utf8);
console.log(decrypted);

data2 つのダッシュ ('--') で区切られた、Base64 でエンコードされた暗号文と IV を含む文字列です。

暗号文の 16 進表現と IV をこのツールに貼り付けて、データが正しいかどうかを確認したところ、目的の結果が得られました。

復号化関数から空の文字列 (および空の単語配列) を取得する理由を教えてください。ちなみに、このコードではエラーはまったく発生しません。

4

1 に答える 1