1

ご協力ありがとうございました。

sjcl ライブラリまたは cryptojs aes ライブラリに問題があります。ファイルを aes で暗号化するたびに、ファイル サイズは * 2 になります。たとえば、4 MB のファイルをアップロードすると、サーバーに 8 MB のファイルが存在します。

バイトサイズが 16 で割り切れるブロックにファイルを分割します。

私を助けてください

これは私がファイルを暗号化する方法です:

var l_EncryptetData = CryptoJS.AES.encrypt(p_ChunkData, p_FileKey).toString();

これは、4mb ファイルのブロック サイズを含む配列の例です。

0: 1572864
1: 1572864
2: 867005
length: 3

FileKey は SHA-256 ハッシュです

4

1 に答える 1

2

CipherParams暗号出力 (オブジェクト) を文字列に変換しています。デフォルトでは、CryptoJS は結果を 16 進数で表すことによってこれを行います。各バイトは 2 つの 16 進数としてエンコードされます。カスタム形式戦略を提供することで、この動作をオーバーライドできます。または、暗号文を文字列に変換しないでください。バイナリデータとして保管してください。

アプリケーションのユーザーに、安全ではないことを警告してください。

于 2015-07-08T17:32:28.757 に答える