2011-09-13 9 views
1

URLをデータベースに保存しています。新しいURLを挿入すると、そのURLが既にデータベースに存在するかどうかを確認したいと思います。重複したURLチェックのためのどのハッシュアルゴリズムですか?

私が間違っていないのであれば、md5やsha-1などを使ってURLをハッシュし、新しいフィールドを挿入する前に重複するデータベースのフィールドをチェックすることです。

私は、MD5はあなたが私のために提案する何をすべきか... SHA-1も、

を衝突を生成することができます知っていますか?私のニーズは、以下のとおりです。

  • DBサイズ:データベース上のレコードの最終的には10〜20百万

  • パフォーマンス/スピード:小ハッシュサイズデータベースは重い負荷が重複をチェックする必要はありませんので、(

  • 公差:私は10万レコードごとに1つの衝突を得るかどうかは気にしません。私のニーズは、0%の衝突(大きなハッシュ)ではなく、パフォーマンス(小さなハッシュ)に向かっています。故意に衝突を生成するために、不正な形式のURLによる攻撃の

  • チャンス:極めて低い

  • 、このような攻撃が成功した場合に可能な最大ダメージ:極めて低い

質問:

  • elieve md5で十分です(何か良いことを提案する)?

  • 多分md5はとなりました。私にとってと重大なことに、もっと簡単なものを使ってパフォーマンス上の利点を得ることができますか?

ありがとうございました!

答えて

0

md5などの比較的安価なハッシュ(おそらくQuark?)を使用して、まれに一致するエントリの完全なURLを衝突チェックするのはどうですか?この方法では、安価なハッシュチェックをしているだけでなく、実際には重複したURLを挿入することもありません。

+0

答えていただきありがとうございます。Shea Levy、私はmd5に行き、衝突の場合にチェックすることを決めました。私はQuarkを試したかったのですが、PHPの実装が見つからなかったので、私はグーグルで試してみました。残念ながら、結果はPHP用のQuarkミニCMSと、Quarkハッシュアルゴリズム用のものではありませんでした... –