【问题标题】:probability of collision in MD5MD5 中的碰撞概率
【发布时间】:2017-01-20 17:58:50
【问题描述】:

最坏的情况,我在缓存中有 1.8 亿个值(在它们过时前 15 分钟窗口),而 MD5 有 2^128 个值。我发生碰撞的概率是多少?或者更好的是,是否有某个网页可以回答该问题或对其进行粗略估计?那会很摇滚,所以我知道我的机会。

【问题讨论】:

标签: md5


【解决方案1】:

概率为 1-m!/(mⁿ(m-n)!),其中 m = 2¹²⁸n = 180000000。 p>

通过在线 Wolfram 运行它超过了可用的计算时间!

如果你在本地安装了 SmallTalk,你可以运行这个:

|m n p|

m := 2 raisedTo:128.
n := 180000000.
p := (1-(m factorial/((m raisedTo:n)*(m-n)factorial)))asFloat.

Transcript show:p printString;cr.

搜索生日问题会出现Wikipedia page,他们提供了一个表格,显示 128 位和 2.6×10¹⁰ 哈希,冲突的概率是 10¹⁸ 之一,所以这是哈希数的 140 倍你在考虑什么。所以你知道你的几率比这“更糟”。

如果 n ≪ m1-e-n2/2m 的一个很好的近似值,其中如果你插入上面的 mn,你得到 4.76×10⁻²³ 或 2.10×10²² 中的 1 作为碰撞概率。

即使发生冲突的可能性非常低,但在FOOBAR 的情况下是谨慎的,比如如果有问题并且哈希值累积超过 15 分钟,至少要确认事件会发生什么的碰撞。如果有人以某种方式注入重复的哈希值以试图破坏它,这也会有所帮助。

【讨论】:

    猜你喜欢
    • 2011-11-19
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2018-01-29
    • 2015-03-31
    • 2021-08-06
    相关资源
    最近更新 更多