AES-256で暗号化されたBase64でエンコードされたdata
を復号しようとしています。上位バイトは、この補正後19の代わりに144に設定されているためCryptoJSでAES CFBを解読するときに有効なバイト数が正しくありません
var data = "Ic9OcXxn2MnpgFwH4SHkxSY3laYB+kkevevwOPeQjLEeUsAVcHzLdBJZ1liWK5d94I/uNwyzbk+/l6QH/WsU0mzxuXcqBYl4iRIA7UIfchYJTsoaWAnSIjsioFUBAfc8YCODID0HW4AY7nK6Bb0mTP55HxlWstE92w1uJVMmBmJRscrAxySNlAFzVVGxuiiCc3sJimfbMNajXOUeFgvSzw==";
var base64data = CryptoJS.enc.Base64.parse(data);
var encrypted = new CryptoJS.lib.WordArray.init(base64data.words.slice(4));
var iv = new CryptoJS.lib.WordArray.init(base64data.words.slice(0, 4));
var key = CryptoJS.enc.Utf8.parse("secure%password!secure%password!");
var cipher = CryptoJS.lib.CipherParams.create({
ciphertext: encrypted
});
var decrypted = CryptoJS.AES.decrypt(cipher, key, {
iv: iv,
mode: CryptoJS.mode.CFB
});
var result = decrypted.toString(CryptoJS.enc.Utf8);
console.log(decrypted.toString(CryptoJS.enc.Utf8));
// Wrong Output: {"first_name": "Han
console.log(decrypted.sigBytes);
decrypted.sigBytes = 144
console.log(decrypted.toString(CryptoJS.enc.Utf8)); // Correct
// Correct Output: {"first_name": "Hans-J\u00fcrgen", "last_name": "M\u00fcller", "city": "Hamburg", "number": "20a", "zip": "20456", "street": "Ladenstra\u00dfe"}
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/mode-cfb.js"></script>
復号化されたデータの一部のみでWordBuffer
結果の最初の出力、:私のJSコードのこの部分、出力が間違っています。
なぜsigBytesマニュアルを修正する必要がありますか?何か案は?ありがとうございました!