编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 名词解释 / MD5

MD5

MD5(Message-Digest Algorithm 5,消息摘要算法第 5 版)是由 Ronald Rivest 于 1991 年设计的一种哈希算法。它把任意长度的输入数据压缩成一个固定的 128 位(16 字节)摘要,通常以 32 位十六进制字符串表示,例如 d41d8cd98f00b204e9800998ecf8427e 就是空字符串的 MD5 值。它是单向的:同样的输入永远得到同样的输出,但无法从摘要反推原文。

MD5 的典型用途是做数据指纹:校验文件在传输或存储中是否损坏、判断两份内容是否相同、给缓存或数据去重生成 key。工作方式是先对消息按 512 位分块填充,再通过四轮位运算把每一块混入 128 位内部状态,最终输出摘要。它计算速度很快,实现简单,因此在非安全场景里仍很常见。

需要特别注意的是,MD5 在密码学上已被攻破:研究者能在很短时间内构造出不同内容却拥有相同 MD5 的「碰撞」。因此它不应再用于任何安全用途,比如数字签名、证书、防篡改校验。几个常见误区:

常见问题

MD5 和 SHA-256 有什么区别,该用哪个?
两者都是哈希算法,但 MD5 输出 128 位且已被攻破,SHA-256 输出 256 位、目前仍安全。只是本地校验文件是否损坏,MD5 够用;只要涉及安全(防篡改、签名、对抗恶意构造),就必须用 SHA-256 或更强算法。
能把 MD5 值还原成原始内容吗?
不能。MD5 是单向哈希,计算过程丢失了信息,数学上无法逆推。网上的「MD5 解密」只是拿常见字符串的哈希建了字典去反查,对随机或较长的输入基本查不到。
用 MD5 存用户密码可以吗?
不可以。MD5 计算太快,配合 GPU 和彩虹表能被暴力破解,即使加盐也不够。密码应使用专门的慢哈希,如 bcrypt、scrypt 或 argon2。

相关工具

相关名词