大量のハッシュをハッシュすると、ハッシュの衝突が発生する可能性はどのくらい高くなりますか?

StackOverflow https://stackoverflow.com/questions/1706461

  •  19-09-2019
  •  | 
  •  

質問

ファイルを識別するためにハッシュを使用しているとします。そのため、安全にする必要はなく、衝突を最小限に抑える必要があるだけです。SIMD を使用して 4 つのハッシュを並列実行し、最終結果をハッシュすることでハッシュを高速化できると考えていました。ハッシュが 512 ビット ブロックを取得するように設計されている場合は、一度に 4x512 ビット ブロックを取得してファイルをステップ実行し、そこから 4 つのハッシュを生成します。次に、ファイルの最後で、結果の 4 つのハッシュを一緒にハッシュします。

この方法では生成されるハッシュが貧弱になると確信しています...しかし、どれくらい貧しいでしょうか?裏計算はありますか?

役に立ちましたか?

解決

ファイルのブロックをハッシュするより速くディスクから読み取ることができるという考えは、テストされていない仮定ですか?ただし、ディスク IO (SSD であっても) は、ハッシュが行われる RAM よりも何桁も遅くなります。

衝突を少なくすることはすべてのハッシュの設計基準であり、すべての主流のハッシュはそれをうまく機能します。主流のハッシュを使用するだけです。MD5。

投稿者が検討しているソリューションに特有のものですが、並列ハッシュがハッシュを弱めることは当然のことです。投稿者が述べたように、ブロックの並列ハッシュとその結果の結合のために特別に設計されたハッシュがありますが、おそらくまだ広く普及していません(例: MD6, 、SHA3から継続的に撤退しました)

より一般的には、次のものがあります。 主流の実装 SIMD を使用するハッシュ関数の数。ハッシュ実装者は非常に パフォーマンス重視の, 、実装の最適化には時間がかかります。あなたも彼らの努力に匹敵する大変な仕事をすることになるでしょう。に最適なソフトウェア 強い ハッシュは約 6 ~ 10 サイクル/バイトです。 ハードウェアアクセラレーション ハッシュ化が実際のボトルネックである場合は、ハッシュ化も使用できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top