假设产生160位摘要的散列函数。我们需要散列多少消息才能以大约75%的概率进行冲突?
谢谢你的帮助:)
答案 0 :(得分:1)
经验法则是,在绘制sqrt(n)
个数字后,有50%的机会发生碰撞。这个数字略多于此,但平方根是一个很好的指导方针。所以在你的情况下,在2 ^ 80次尝试后你有50%的碰撞几率。
另一个经验法则是,在4*sqrt(n)
之后,你获得复制的可能性几乎是确定的。
根据https://en.wikipedia.org/wiki/Birthday_problem#Cast_as_a_collision_problem,您可以计算您需要绘制的值的数量n
,以获得重复的概率p
:
n = sqrt(2 * d * ln(1/(1-p)))
ln
是自然对数,p
是从0到1.0的概率。
所以在你的情况下:
n = sqrt(2 * 2^160 * ln(1/.25))
n = sqrt(2^161 * 1.38629)
小于2 ^ 81。
答案 1 :(得分:0)
2 septillion
范围内的某个地方。这是2,000,000,000,000,000,000,000,000,000条消息。这是等式。
chance of collision = 1 - e^(-n^2 / (2 * d))
n
是消息的数量,d
是可能性的数量。因此,如果d
为2^160
,则n
将位于2^80.7
附近。