下载软件时官网给了一串 32 位的十六进制字符,注册账号时网站提示「密码强度不足」——这两件事背后是同一个概念:哈希(Hash)。理解哈希的三个特性,这两个日常场景就都明白了。
哈希函数把任意长度的输入变成固定长度的输出,MD5 的输出永远是 128 位,写成十六进制正好 32 个字符。它有三个关键性质:
所以哈希值常被称作「数字指纹」——不泄露内容本身,但能唯一确认内容。
MD5 最正当的用途是校验而不是加密:
必须提醒:MD5 已被证明存在碰撞攻击,不适合再做安全用途(如密码存储、数字签名)。安全场景应使用 SHA-256 及以上算法;但日常校验、调试等非对抗性场景,MD5 依然方便好用。
「Abc123!」够强吗?直觉不可靠,衡量密码强度有两个正经指标:
| 指标 | 含义 | 参考线 |
|---|---|---|
| 信息熵 | 密码的不确定性,单位比特(bit) | 60 bit 以上算强 |
| 破解耗时 | 按离线暴力破解速度估算 | 越长越好,年起步 |
熵的算法:每个字符的 possibilities 取以 2 为底的对数累加。小写字母每位约 4.7 bit,数字约 3.3 bit,混合大小写+数字+符号每位可到 6.5 bit 以上。举例:8 位纯小写 ≈ 37.6 bit,几秒到几分钟可破;12 位混合字符 ≈ 78 bit,暴力破解在工程上不可行。
比「加符号」更有效的三个策略:
问:MD5 能用来加密密码吗?
不能。「加密」意味着可解密,MD5 是单向哈希。且 GPU 每秒可算上百亿次 MD5,弱密码的 MD5 秒破。存储密码应使用 bcrypt、Argon2 等专用慢哈希。
问:两个不同文件的 MD5 一样,是碰撞了吗?
大概率是工具用错或文件没传完。真实碰撞需要精心构造,随机遇到几乎不可能。先重新计算确认。
问:在线算 MD5 安全吗?密码会不会泄露?
取决于工具实现。本站工具在浏览器本地计算,输入不上传服务器,但涉及敏感内容的原则是:能本地算就不联网算。
哈希是「指纹」不是「保险箱」。校验用它,没问题;守护它,请升级算法。这两个工具搭配使用,日常的数据一致性检查和密码体检就都齐了。