同じ長さの100個の異なる文字列のセットがある場合、文字列のSHA1ダイジェスト衝突が発生する可能性が低い確率をどのように定量化できますか?
SHA-1によって生成される160ビットのハッシュ値は、すべてのブロックのフィンガープリントが一意であることを保証するのに十分な大きさですか?一様分布のランダムハッシュ値、n個の異なるデータブロックのコレクション、bビットを生成するハッシュ関数を想定すると、1つ以上の衝突が発生する確率pは、ブロックのペアの数に確率特定のペアが衝突します。
(ソース: http://bitcache.org/faq/hash-collision-probabilities )
さて、衝突の確率は次のようになります。
1 - ((2^160 - 1) / 2^160) * ((2^160 - 2) / 2^160) * ... * ((2^160 - 99) / 2^160)
10のスペースで2つのアイテムが衝突する確率を考えます。最初のアイテムは、100%の確率で一意です。 2番目は確率9/10で一意です。したがって、両方が一意である確率は_100% * 90%
_であり、衝突の確率は次のとおりです。
1 - (100% * 90%), or 1 - ((10 - 0) / 10) * ((10 - 1) / 10), or 1 - ((10 - 1) / 10)
ありそうもない。リモートで使用するには、さらに多くの文字列が必要になります。
Wikipediaのこのページ ;の表をご覧ください。 128ビットと256ビットの行間を補間するだけです。