【发布时间】:2011-09-13 00:18:18
【问题描述】:
我正在将 URL 保存在数据库中,当我插入一个新 URL 时,我想检查该 url 是否已存在于数据库中。
一种常见的做法(如果我没记错的话)是使用 md5 或 sha-1 等对 url 进行哈希处理...并在插入新字段之前检查数据库中的该字段是否重复。
我知道 md5 会产生碰撞,sha-1 也是...
你对我有什么建议?我的需求是:
数据库大小: 最终数据库中有 10 到 20 百万条记录
性能/速度:小哈希大小,因此数据库不会对重复项进行繁重的负载检查(该字段当然会有索引)
容差:我不在乎每 100,000 条记录是否会发生 1 次冲突。我的需求更多的是性能(小哈希)而不是 0% 冲突(大哈希)。
恶意 URL 攻击故意产生冲突的可能性:极低
在这种成功攻击的情况下可能造成的最大伤害:极低
问题:
您认为 md5 是否足够(建议更好)?
也许 md5 对我来说甚至是矫枉过正,我真的可以通过使用更简单的东西来获得性能优势?
提前谢谢你们!
【问题讨论】:
标签: hash md5 database-performance no-duplicates