重复URL检查哪种哈希算法?

时间:2011-09-13 00:18:19

标签: hash md5 database-performance no-duplicates

我正在将URL保存在数据库中,当我插入新的URL时,我想检查数据库中是否已存在该URL。

一种常见的做法(如果我没有记错的话)是使用md5或sha-1等来对网址进行哈希处理...并在插入新文件之前检查数据库中的字段是否有重复项。

我知道md5可以产生碰撞,也是sha-1 ......

你对我有什么建议?我的需求是:

  • 数据库大小:最终数据库上有10到20百万条记录

  • 性能/速度:小散列大小,因此数据库不会对重复项进行重负载检查(当然在该字段上会有索引)

  • 宽容:我不在乎每10万条记录是否发生1次碰撞。我的需求更多的是性能(小哈希)而不是0%冲突(大哈希)。

  • 格式错误的网址可能会故意发生冲突:极低

  • 如果成功攻击可能造成的最大伤害:极低

问题:

  • 你相信md5就够了吗(建议好些什么)?

  • 对我来说,md5甚至可能矫枉过正,我可以通过使用更简单的东西认真获得性能优势吗?

先谢谢你们!

1 个答案:

答案 0 :(得分:0)

如何使用md5或类似的相对便宜的哈希值(可能是Quark?),并且在极少数情况下碰撞检查匹配条目的完整URL?这种方式大多数情况下您只需要进行廉价的哈希检查,但实际上也从未插入过重复的URL。