1

ファイルを保存するためにAmazon S3を使用しています。保存中、その場でストリームを暗号化しています。再びダウンロードすると、その場でストリームを復号化します。このセットアップは非常にうまく機能していますが、時折、次の例外が発生します -

javax.crypto.IllegalBlockSizeException: パディングされた暗号で復号化する場合、入力の長さは 16 の倍数でなければなりません

このエラーが発生する原因として考えられるものは何ですか。アップロード/ダウンロード中のデータの破損は可能性の 1 つですか? はいの場合、これはパディング バイトが破損しているか、ファイル内のいずれかのバイトが破損している場合にのみ発生しますか?

[編集] しかし、奇妙なことに、S3 に保存されているファイル サイズは適切であり、ファイルの半分だけが保存されているわけではありません。

4

1 に答える 1

1

はい、そうです。部分的なファイルを受け取る可能性が最も高いです。完了する前に接続が中止されたかどうかを確認できるはずです。変更されていない完全なファイルを確実に取得するには、(H)MAC を追加するか、整合性検証を伴う暗号モード (GCM など) を使用します。

[編集]:いいえ、この特定の復号化例外は、ファイル自体が破損している場合ではなく、完全なファイルが利用できない場合にのみ発生するはずです。受信時のファイル処理を確認することをお勧めします (ストリームを閉じるか、部分的なファイルを削除するのを忘れています)。

于 2012-04-13T20:53:38.397 に答える