什么是 MD5?
MD5(消息摘要算法5)是一种广泛使用的加密哈希函数,它产生一个128位(16字节)的哈希值,通常表示为32个字符的十六进制数。它被设计用作校验和来验证数据完整性。
快速了解
| 全称 | 消息摘要算法5 |
|---|---|
| 创建时间 | 1991 年由 Ronald Rivest 设计 |
| 规范文档 | 官方规范 |
工作原理
MD5 由 Ronald Rivest 于 1991 年设计,用于替代早期的 MD4 哈希函数。它以 512 位块处理输入数据,无论输入大小如何,都产生固定的 128 位输出。虽然 MD5 曾经广泛用于安全目的,但 2004 年及之后发现的加密弱点使其不适合用于安全敏感的应用。然而,它仍然适用于非加密目的,如校验和和数据去重。
主要特点
- 产生固定的 128 位(32 个十六进制字符)输出
- 确定性 - 相同输入始终产生相同输出
- 计算速度快,适合处理大文件
- 单向函数 - 无法从哈希值反推原始数据
- 已发现碰撞漏洞 - 不适合加密用途
- 仍广泛用于校验和和文件验证
常见用途
- 文件完整性验证和校验和
- 存储系统中检测重复文件
- 为缓存生成唯一标识符
- 验证下载文件的完整性
- 遗留密码存储(不建议用于新系统)
示例
loading...
Loading code...常见问题
MD5 用于密码哈希还安全吗?
不安全。MD5 在密码学上已被破解,容易受到碰撞攻击。对于密码哈希,应使用 bcrypt、Argon2 或 PBKDF2 等现代算法,这些算法专门设计为计算缓慢且能抵抗暴力破解攻击。
MD5 和 SHA-256 有什么区别?
MD5 生成 128 位哈希(32 个十六进制字符),而 SHA-256 生成 256 位哈希(64 个十六进制字符)。SHA-256 在密码学上是安全的,推荐用于安全应用,而 MD5 存在已知漏洞,只应用于校验和等非安全用途。
MD5 哈希值可以被反向还原为原始数据吗?
不能。MD5 是单向哈希函数,无法通过数学方法反向计算。但是,攻击者可以使用彩虹表或暴力破解方法来找到产生相同哈希的输入,这就是 MD5 不再适合加密用途的原因。
为什么不同的文件有时会有相同的 MD5 哈希值?
这称为碰撞,即两个不同的输入产生相同的哈希输出。MD5 的 128 位输出空间和已发现的漏洞使得人为制造碰撞成为可能。这是一个重大的安全缺陷,使得 MD5 不适合用于验证文件真实性。
MD5 目前还有哪些有效的使用场景?
MD5 仍然适用于非安全用途,如文件完整性校验和(在不担心恶意篡改的情况下)、缓存键生成、数据去重和生成唯一标识符。对于任何安全敏感的应用,应改用 SHA-256 或 SHA-3。