1

複雑な理由がたくさんあります。暗号化された状態でネットワーク経由で画像を送信し、AES を使用して反対側で復号化する必要があります。サーバー側では、次のことが起こります。

openssl aes-256-cbc -in pup.jpg -out pup.jpg.enc
base64 pup.jpg.enc > pup.jpg.enc.b64

クライアント側で使用している JavaScript は次のとおりです。

<img id="picture"/>
<script>
    var picture = document.getElementById("picture");
    var data = new XMLHttpRequest();
    data.open('GET', 'http://server.com/pup.jpg.enc.b64', true);
    data.onreadystatechange = function(){
        if(this.readyState == 4 && this.status==200){
            var dec = CryptoJS.AES.decrypt(data.responseText, "password");
            var plain = CryptoJS.enc.Base64.stringify( dec );
        picture.src = "data:image/jpeg;base64,"+plain;
        }
    };
    data.send(null);
</script>

入力と出力にずれが生じていますが、一生その理由がわかりません。入力と出力は次のとおりです。

In:  /9j/4RLKRXhpZgAATU0AKgAAAAgADAEAAAMAAAABBADJx...
Out: /9j/4RLKRXhpZgAATU0AKgAAAAgADAEAAAMAAAABBAAAA...
                                               ^-- deviation

256 ビット暗号化を使用していることを CryptoJS に指定する必要がありますか?

4

2 に答える 2

0

CryptoJS のドキュメントから、AES.decrypt の出力はハッシュ関数の出力と同じ型であることが言及されています。Hasher Output セクションには、このWordArray を Base 64 でエンコードされた文字列に変換する例があります。

    alert(hash.toString(CryptoJS.enc.Base64)); // L3dmip37+NWEi57rSnFFypTG7ZI25Kdz9tyvpRMrL5E=
于 2013-11-07T01:24:42.600 に答える