正しいデータ (オンライン デコーダーで検証済み) を持っていることは確かですが、デコーダーからの出力として空の文字列しか得られません。
これは私の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);
data
2 つのダッシュ ('--') で区切られた、Base64 でエンコードされた暗号文と IV を含む文字列です。
暗号文の 16 進表現と IV をこのツールに貼り付けて、データが正しいかどうかを確認したところ、目的の結果が得られました。
復号化関数から空の文字列 (および空の単語配列) を取得する理由を教えてください。ちなみに、このコードではエラーはまったく発生しません。