cryptojsを使用して画像を復号化し、それをページに挿入する

StackOverflow https://stackoverflow.com/questions/19826009

  •  05-07-2022
  •  | 
  •  

質問

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

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に指定する必要がありますか?

役に立ちましたか?

解決

問題は、入力文字列に新しい行が含まれている場合、ライブラリが機能しない原因となるCryptojsのバグがあるように見えます。このようなファイルをエンコードしてください:

openssl enc -aes-256-cbc -in pup.jpg -pass pass:"password" | base64 | tr -d '\n' > pup.enc

問題を修正します。問題は、JavaScriptが必要ですが、エンコードが必要です。まあ、そしてJavaScriptを使用して、Cryptojsにバグがあるからです。 https://code.google.com/p/crypto-js/issues/detail?id=38

他のヒント

Cryptojsドキュメントから、AES.Decryptの出力はハッシュ関数の出力と同じタイプであることに言及しています。の ハッシャー出力セクション このWordArrayをベース64エンコード文字列に変換する例があります。

    alert(hash.toString(CryptoJS.enc.Base64)); // L3dmip37+NWEi57rSnFFypTG7ZI25Kdz9tyvpRMrL5E=
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top