1

ディレクトリ構造全体の SHA-1 チェックサムを計算しようとしています。

これまでに行ったことは、通常のファイルごとに SHA-1 を再帰的に計算し、すべてのチェックサムを一緒に追加することです。問題は、これにより計算がファイルをトラバースする順序に依存することです。

つまり、ファイルを含むフォルダーがある場合

file1.dat file2.dat

および同じファイルを含むが、順序付けされた他のフォルダー

file2.dat file1.dat

これにより、さまざまなチェックサムが計算されます。

SHA-1 の計算順序を独立させるにはどうすればよいですか?

ありがとう!

4

3 に答える 3

2

SHA-1 を計算する前に File.list から取得したファイル名 String[] を並べ替えるか、File.listFiles の File[] を並べ替えてみてください。File is Comparable です。Arrays.sort で十分です。File.list / File.listFile は、アイテムを特定の順序で返すわけではありませんが、ソートされているように見えることに注意してください。

于 2012-12-13T10:56:11.980 に答える
0

それには少なくとも2つのオプションがあります。

  1. ディレクトリ用のアーカイブファイルを作成してから、そのダイジェストを作成します。(zip、jar)

  2. すべてのファイルバイトを1バイト配列に読み込み、そこからダイジェストを作成します。

  3. アルゴリズムを使用して、ダイジェストを作成する前にデータを事前注文します。

  4. ダイジェストの2つのリストを作成し、それらを比較します。

個人的にはオプション1を選択しますが、高速で簡単です。

于 2012-12-13T11:04:54.373 に答える
0

さて、すでにハッシュ計算アルゴリズムの準備ができているので、すべてのハッシュをセット (または重要な要素の順序をとらない他のデータ構造) と各ディレクトリに追加し、セットが等しいかどうかを確認できます。

クラスを設定

于 2012-12-13T10:59:07.237 に答える