首页 / 教程文章 / 哈希碰撞是什么?生日悖论告诉你碰撞有多容易

哈希碰撞是什么?生日悖论告诉你碰撞有多容易

发布于 2026-08-23 16:00:00 · 0 阅读 · 标签:哈希,碰撞,生日悖论,安全

23 人房间就有 50% 概率两人同生日——哈希碰撞概率同样远超直觉。讲清碰撞原理、生日攻击与为什么 128 位哈希够用。

一、什么是哈希碰撞

哈希把任意长输入映射到固定长输出,输出空间有限而输入无限——由抽屉原理,必然存在不同输入得到相同输出,这就是碰撞。碰撞不是 bug 而是数学必然,好哈希函数只是让「找到碰撞」极其困难。

二、生日悖论:概率远超直觉

一个房间多少人,就有 50% 概率两人同一天生日?答案只要 23 人

同理,对输出 n bit 的哈希,只需约 2n/2 次尝试就有 50% 概率找到任两次输出相同:

三、碰撞攻击的类型

四、工程启示

  1. 安全场景远离 MD5/SHA-1:数字签名、证书、完整性校验用 SHA-256 起步。
  2. 哈希表/Bucket 场景:非对抗环境下 MD5 仍可用,但 SipHash 这类带密钥哈希能防 HashDoS。
  3. 去重判断:哈希相同≠内容相同(概率极小但存在),关键场景比对哈希后再比对长度或原文。

在线体验

不用装任何环境,直接用本站MD5/SHA 哈希工具在线操作,数据都在浏览器本地处理,方便又安全。

常见问题

两个文件 MD5 相同就一定同文件吗?

理论上不一定(碰撞存在),实际上自然产生碰撞概率约 2^-128 可忽略。但对抗场景(有人故意构造)MD5 碰撞已被实际制造,安全校验请用 SHA-256。

为什么生日攻击只要 2 的 n/2 次方?

因为比较的是「任意两两配对」而非「指定一个找另一个」:n 个对象有 n(n-1)/2 个配对机会,概率按平方根速度攀升,这就是生日悖论的威力。

SHA-256 会被碰撞攻破吗?

目前没有任何实际可行的碰撞攻击,安全余量约 128 bit。短期内不需要担心,长期看 SHA-3 是备好的备胎。

更多文章