第 3 课

MD5 与 SHA 算法

对比 MD5、SHA-1 与 SHA-2 家族在实际开发中的用法。

不同 Hash 算法输出的摘要长度和安全余量不同。选错算法可能导致无法对接第三方工具,或造成“看起来很安全”的错觉。

MD5(128 位)

MD5 计算快,仍出现在旧 checksum、缓存键和部分工具里。由于碰撞攻击已实用化,不应再用于新的安全敏感设计。MD5 更适合兼容与排查,而不是对抗主动攻击者的强完整性证明。

SHA-1(160 位)

SHA-1 如今基本属于遗留算法。Git 仍使用基于 SHA-1 的对象 ID 格式,但 TLS 证书与许多签名场景已迁移到其他算法。可以把 SHA-1 与 MD5 类似对待:规范要求时用,新安全保证别指望它。

SHA-256、SHA-384、SHA-512(SHA-2 家族)

这是当前最常见的现代默认:

  • SHA-256:文件 checksum、内容寻址和许多 API 的默认选择
  • SHA-384 / SHA-512:部分标准与平台要求的更强变体

浏览器 Web Crypto API 对三者支持普遍良好。

实用选择建议

  • 校验现代下载包 checksum → SHA-256
  • 对接仍输出 MD5 的旧工具 → MD5
  • 合规文档明确要求 SHA-512 → SHA-512
  • 存储密码 → 不要单独使用这些算法;应使用 Argon2、bcrypt 或 scrypt

对比 Hash 前,务必确认 算法名称十六进制还是 Base64 输出、以及 哈希的是原始字节还是 UTF-8 文本

想动手练习时,可使用 DevCove 相关工具——可选,不属于本课正文。

打开相关工具

返回课程概览