2

ファイルのハッシュの計算を含むプロジェクトに取り組んでいます。プロジェクトはファイル バックアップ サービスのようなものです。そのため、ファイルがクライアントからサーバーにアップロードされると、そのファイルがサーバーで既に利用可能かどうかを確認する必要があります。ファイルの CRC-32 ハッシュを生成し、ハッシュをサーバーに送信して、既に利用可能かどうかを確認します。

ファイルがサーバーにない場合、以前はファイルを 512 KB のチャンクとして [Dedupe 用に] 送信していましたが、512 KB のチャンクごとにハッシュを計算する必要がありました。ファイル サイズが数 GB になる場合があり、複数のクライアントがサーバーに接続します。したがって、ファイルには高速で軽量なハッシュ アルゴリズムが本当に必要です。何か案は ..?

PS : 私はすでに StackOverflow でいくつかのハッシュ アルゴリズムの質問に気付きましたが、その答えは、この種のタスクに正確に必要なハッシュ アルゴリズムの完全な比較ではありません。これは多くの人にとって本当に役立つに違いありません。

4

3 に答える 3

2

実際、CRC32 は速度も分散も最高ではありません。

これは当然のことです。CRC32 は今日の標準ではかなり古く、CPU が 32/64 ビット幅でも OoO-Ex でもない時代に作成されました。また、分散プロパティはエラー検出ほど重要ではありませんでした。その後、これらの要件はすべて変更されました。

ハッシュ アルゴリズムの速度と分散特性を評価するために、Austin Appleby は優れたSMHasherパッケージを作成しました。結果の要約をここに示します。Q.Score が 10 (完全分布) のアルゴリズムを選択することをお勧めします。

于 2012-12-12T17:08:28.057 に答える
0

ファイルが重複しているかどうかを確認するために CRC-32 のみを使用している場合、異なるファイルが同じ crc-32 を持つ可能性があるため、偽の重複が発生します。sha-1 を使用した方がよいでしょう。crc-32 と md5 はどちらも弱すぎます。

于 2015-01-04T07:17:00.867 に答える
0

あなたは CRC-32 を使用していると言いますが、より高速なハッシュが必要です。CRC-32 は非常に基本的で、かなり高速です。I/O 時間はハッシュ時間よりもはるかに長くなると思います。また、衝突のないハッシュも必要です。つまり、2 つの異なるファイルまたは 512 KB のチャンクが同じハッシュ値を取得します。MD5 (安全なアプリケーションには使用しないでください) や SHA1 などの任意の暗号化ハッシュを調べることができます。

于 2012-11-30T14:33:37.690 に答える