2011-02-04 16 views
1

私は2を持っています私がハッシュしている4バイトのキー。衝突のチャンスは何ですか?私は2 8バイトの鍵を持っている場合(実際にはすべてのキーを保存するが、私は最悪のケースを知られたくない)何MD5は、4バイトと8バイトのキーを16バイトの値にハッシングします。衝突のチャンスは何ですか?

+2

この宿題はありますか?それかどうか、これまでに何を把握していますか? –

+0

2 ** 64キーを保存するために何を使用していますか?手頃な価格ですか?そのたくさんのデータを保存できるようにしたいと思います... –

+0

'@Felix Kling:'これは宿題ではありません。私は範囲[0、* d *]を持つ離散的な一様分布から引かれた* n *ランダムキーの一般的な公式(少なくとも2つのキーが同じである確率)を計算しました。それは少数では機能しますが、* n * = 2^32と* d * = 2^128は大きすぎます。 – Supercollider

答えて

3

the wikipedia page on the Birthday Problemの場合、良好な1次近似が1-e^(-(n^2)/d)で見つかります。あなたの値をグラフ化すると、this graph(対数横軸、確率が急上昇する位置を拡大しています)となります。これは近似値に過ぎず、控えめに考えなければならないことに注意してください(実際の確率はやや高いかもしれませんが、正しい球場にあるはずです)。

0

ハッシュコードはどうしていますか? 2つのデータが同じであるかどうかを調べるためにそれらを使用している場合、悪意のあるエンティティによって作成されていないデータを扱っている場合に限り、MD5ハッシュはかなり良いです。 (暗号の目的は、「悪意のある攻撃者」の問題に対処するために、より良いハッシュアルゴリズムを正確に必要とします。)

マップを構築するためにそれらを使用している場合安価なハッシュを使用して、衝突のコストを軽減する方法を考え出します(たとえば、ハッシュテーブルからリンクされたリストをハングアップし、平均的な重みが大きくなりすぎるとサイズ変更/再構築するなど)。

関連する問題