6
MessageDigestオブジェクトの内部状態を保存することは可能でしょうか?データベースに保存したいので、String
、int
、byte[]
などのプリミティブデータのみを使用する必要があります。MessageDigestの内部状態をデータベースに保存するにはどうしたらいいですか?
私が達成しようとしているのは、断片化したファイルを(長い間)受信し、すべてのフラグメントをデータベースに保存し、最後のフラグメントを受信した後にファイルのSHA512ダイジェストを確認してから以前にデータベースに保存されたすべてのデータを元に戻します。あなたは文字列(XML形式)にオブジェクトをシリアル化し、それをバック返すことができ
MessageDigest md = MessageDigest.getInstance("SHA-512");
// restore previous internal state of md
md.update(dataSegment);
// save internal md state
それは実際に内部SHAの状態を保存していますか?これは、512ビットの純粋な状態プラス現在の入力長+現在の不完全ブロックIIRCになります。したがって、一般的には約200バイトです。 –
遅れて申し訳ありません;)しかし、これは提案されたXStream技術を使用して実行可能であることを確認できます。 @ qarma生成されたxmlのサイズはおよそ12kBですが、数MBのチャンクでファイルを扱う場合には、より良い解決策となります。 – MJar