2011-09-13 36 views
1

我保存URL的數據庫中,當我插入一個新的,我要檢查,如果該URL數據庫中已存在。哪個哈希算法用於重複的URL檢查?

一種常見的做法(如果我沒有錯誤)是哈希使用MD5或SHA-1等...和檢查在數據庫字段之前插入一個新的重複的URL。

我知道MD5可產生碰撞,也SHA-1 ...

你有什麼建議給我嗎?我的需求是:

  • DB尺寸:數據庫最後10至20百萬條記錄

  • 性能/速度:小散大小,這樣數據庫不會有重負載檢查重複(當然這個領域會有索引)

  • 公差:我不在乎如果我得到每10萬記錄1次碰撞。我的需求更多的是性能(小哈希),而不是0%的碰撞(大哈希)。

  • 機率畸形的URL攻擊產生碰撞的目的:極低

  • 最大傷害可能在這樣一個成功的攻擊的情況下:極低

問題:

  • 你b elieve md5就夠了(有更好的建議)?

  • 也許MD5甚至矯枉過正對我來說,我可以認真地可以通過使用簡單的東西獲得性能優勢?

提前謝謝你們!

回答

0

如何使用md5或類似的相對便宜的散列(可能爲Quark?),以及在衝突檢查匹配項的完整URL的罕見情況下?通過這種方式,大部分時間您只需進行廉價的散列檢查,但是您絕對不會實際插入重複的URL。

+0

謝謝您的回答乳木果利維,我決定去與MD5碰撞的情況下,檢查......我想嘗試夸克但我無法找到一個PHP實現,所以我試着用搜索引擎這一點。不幸的是,結果都是關於Quark迷你cms for PHP,而Quark hashing算法則沒有。 –