MD5 和 SHA-1 曾经是最主流的哈希算法,如今在安全场景中都已不再推荐。但它们并没有"消失"——文件校验、数据比对等非安全场景依然大量使用。
哈希的三个特性
- 确定性:相同输入永远得到相同结果
- 单向性:无法从哈希值反推原文
- 抗碰撞:难以找到两个不同输入产生相同哈希
为什么 MD5 过时了
2004 年起 MD5 被证明可以构造碰撞——两个不同的文件可以产生相同的 MD5 值,这意味着攻击者可能用伪造文件通过"MD5 一致"的校验。SHA-1 在 2017 年也被实际构造出碰撞(SHAttered 攻击)。
新系统怎么选
完整性校验用 SHA-256 起步;密码存储必须使用专门的慢哈希算法(bcrypt、argon2),而不是任何快速哈希——哈希太快反而方便攻击者暴力破解。
abc 的 SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
Q:下载文件还看 MD5 吗?
可以。防止传输损坏的完整性校验不要求抗碰撞,MD5 依然够用且更快;对抗恶意篡改的场景请用 SHA-256。
Q:哈希能"解密"吗?
不能。那些"MD5 解密"网站本质是查字典(彩虹表),只能还原常见弱口令,不是数学上的解密。
提示
计算大文件哈希时用「文件哈希」工具,浏览器本地计算,不用上传文件。
