【问题标题】:Which hash algorithm for duplicate URLs checking?用于检查重复 URL 的哈希算法是什么?
【发布时间】: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


    【解决方案1】:

    如果使用 md5 或一些类似的相对便宜的散列(可能是Quark?),以及在极少数情况下冲突检查匹配条目的完整 URL,会怎样?这样,大多数时候您只需进行廉价的哈希检查,但您也不会实际插入重复的 URL。

    【讨论】:

    • 感谢您的回答 Shea Levy,我决定使用 md5 并检查是否发生碰撞...我想尝试 Quark 但我找不到 PHP 实现,所以我尝试使用谷歌搜索那。不幸的是,结果都是关于 PHP 的 Quark mini cms 而没有关于 Quark 散列算法的......
    猜你喜欢
    • 2015-04-27
    • 2018-02-18
    • 1970-01-01
    • 2011-12-28
    • 2010-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2015-09-25
    相关资源
    最近更新 更多