MD5(Message-Digest Algorithm 5)是一种广泛使用的加密哈希函数,由Ron Rivest在1991年设计。MD5可以将任意长度的输入数据转换成一个固定长度为128位(16字节)的哈希值,通常用32个十六进制字符表示。
MD5 特点
- 固定输出长度:始终生成128位(32个十六进制字符)
- 单向性:从哈希值无法反向推导出原始数据
- 确定性:相同输入始终产生相同的哈希值
- 雪崩效应:输入微小变化会导致输出完全不同
- 快速计算:哈希计算速度非常快
常见应用场景
- 文件完整性验证:下载文件后校验是否完整
- 密码存储:旧系统中的密码哈希(不推荐)
- 数据去重:快速判断数据是否相同
- 数字签名:证书和签名验证
- 版本控制:Git等系统使用SHA1,但MD5仍广泛使用
安全性说明
自2004年起,MD5已被证明不再安全,存在碰撞攻击漏洞(即不同输入可能产生相同哈希值)。对于新的安全敏感应用,建议使用更安全的算法如SHA-256或SHA-3。
但对于非安全场景(如文件校验、数据去重等),MD5仍然是一个快速有效的选择。
重要提示:
- MD5不适用于存储密码等敏感信息
- 对于密码存储,请使用bcrypt、scrypt或Argon2等专门设计的哈希算法
- 文件校验等场景可以继续使用MD5
MD5 示例对比
| 输入文本 | MD5(32位小写) |
|---|---|
| hello | 5d41402abc4b2a76b9719d911017c592 |
| world | 7d793037a0760186574b0282f2f435e7 |
| 123456 | e10adc3949ba59abbe56e057f20f883e |
| password | 5f4dcc3b5aa765d61d8327deb882cf99 |
| 你好 | b94ae3c6cf440cd376a37abb4d6f3988 |