首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计算160位的哈希冲突

计算160位的哈希冲突
EN

Stack Overflow用户
提问于 2018-04-28 05:23:36
回答 2查看 787关注 0票数 1

假设哈希函数产生160位的摘要。我们需要散列多少消息才能以大约75%的概率获得冲突?

感谢您的帮助:)

EN

回答 2

Stack Overflow用户

发布于 2018-04-28 13:24:20

经验法则是,在绘制sqrt(n)数字后,有50%的机会发生冲突。这个数字略高于这个数字,但平方根是一个很好的指导原则。因此,在您的情况下,在2^80次尝试后有50%的机会发生冲突。

另一条经验法则是,在4*sqrt(n)之后,您获得复制的可能性几乎是确定的。

根据https://en.wikipedia.org/wiki/Birthday_problem#Probability_of_a_shared_birthday_(collision),您可以通过以下方法计算需要绘制的值的数量n,以获得副本的概率p

代码语言:javascript
复制
n = sqrt(2 * d * ln(1/(1-p)))

其中ln是自然对数,p是从0到1.0的概率。

所以在你的例子中:

代码语言:javascript
复制
n = sqrt(2 * 2^160 * ln(1/.25))
n = sqrt(2^161 * 1.38629)

小于2^81的值。

票数 1
EN

Stack Overflow用户

发布于 2018-04-28 05:52:00

2 septillion范围内的某个位置。这是2,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000条消息。这是方程式。

代码语言:javascript
复制
chance of collision = 1 - e^(-n^2 / (2 * d))

其中n是消息的数量,d是可能的数量。因此,如果d2^160,那么n将位于2^80.7附近。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50070487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档