什么是 MD5?

MD5(消息摘要算法5)是一种广泛使用的加密哈希函数,它产生一个128位(16字节)的哈希值,通常表示为32个字符的十六进制数。它被设计用作校验和来验证数据完整性。

快速了解

全称消息摘要算法5
创建时间1991 年由 Ronald Rivest 设计
规范文档官方规范

工作原理

MD5 由 Ronald Rivest 于 1991 年设计,用于替代早期的 MD4 哈希函数。它以 512 位块处理输入数据,无论输入大小如何,都产生固定的 128 位输出。虽然 MD5 曾经广泛用于安全目的,但 2004 年及之后发现的加密弱点使其不适合用于安全敏感的应用。然而,它仍然适用于非加密目的,如校验和和数据去重。

主要特点

  • 产生固定的 128 位(32 个十六进制字符)输出
  • 确定性 - 相同输入始终产生相同输出
  • 计算速度快,适合处理大文件
  • 单向函数 - 无法从哈希值反推原始数据
  • 已发现碰撞漏洞 - 不适合加密用途
  • 仍广泛用于校验和和文件验证

常见用途

  1. 文件完整性验证和校验和
  2. 存储系统中检测重复文件
  3. 为缓存生成唯一标识符
  4. 验证下载文件的完整性
  5. 遗留密码存储(不建议用于新系统)

示例

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。

相关工具

相关术语

相关文章