我正在将URL保存在数据库中,当我插入新的URL时,我想检查数据库中是否已存在该URL。
一种常见的做法(如果我没有记错的话)是使用md5或sha-1等来对网址进行哈希处理...并在插入新文件之前检查数据库中的字段是否有重复项。
我知道md5可以产生碰撞,也是sha-1 ......
你对我有什么建议?我的需求是:
数据库大小:最终数据库上有10到20百万条记录
性能/速度:小散列大小,因此数据库不会对重复项进行重负载检查(当然在该字段上会有索引)
宽容:我不在乎每10万条记录是否发生1次碰撞。我的需求更多的是性能(小哈希)而不是0%冲突(大哈希)。
格式错误的网址可能会故意发生冲突:极低
如果成功攻击可能造成的最大伤害:极低
问题:
你相信md5就够了吗(建议好些什么)?
对我来说,md5甚至可能矫枉过正,我可以通过使用更简单的东西认真获得性能优势吗?
先谢谢你们!
答案 0 :(得分:0)
如何使用md5或类似的相对便宜的哈希值(可能是Quark?),并且在极少数情况下碰撞检查匹配条目的完整URL?这种方式大多数情况下您只需要进行廉价的哈希检查,但实际上也从未插入过重复的URL。