代码之家  ›  专栏  ›  技术社区  ›  arkhamvm

在哪里可以找到xxhash64和md5碰撞概率统计信息?

  •  3
  • arkhamvm  · 技术社区  · 8 年前

    我将把它用于缓存系统(生成需要唯一的散列键,大约一亿个)。

    所以我需要一些信息,来决定这对我的任务来说是不是一个好决定。 在最佳情况下-比较md5和xxHash64之间的冲突数。

    1 回复  |  直到 8 年前
        1
  •  8
  •   Michael GEDION    4 年前

    birthday problem .

    通常,给出哈希函数概率的数学表达式为:

    p(k)=1-exp(-k(k-1)/2N,k(散列数)随机生成的值,其中每个值是小于N(可能散列数)的非负整数:

    如果使用md5

    enter image description here

    如果您使用的是数亿个散列键,那么使用md5的冲突概率为0%。

    假设xxhash64生成64位哈希 enter image description here

    根据这张图片,可以看到,如果碰撞百分比为50%,则至少需要50亿个哈希。50亿个散列中的两个可以有奇数的1/2来拥有相同的散列!!!如果你有大约120亿个散列,那么散列碰撞的可能性是百分之百的。

    如果您使用的是数亿个散列键,那么使用xxhash64的冲突概率为0.033% .

    link 解释了md5或快速哈希方法不安全的原因。