SHA256 和 MD5 到底有什么区别?该用哪个?
一句话结论
新项目一律用 SHA256(或更强的 SHA-3 / BLAKE2);MD5 只适合"检测意外损坏",绝不能再用于安全场景。
速查对比
| 维度 | MD5 | SHA256 |
|---|---|---|
| 输出长度 | 128 bit(32 位十六进制) | 256 bit(64 位十六进制) |
| 设计年代 | 1991 | 2001 |
| 碰撞抵抗 | ❌ 已被实战攻破 | ✅ 目前安全 |
| 速度 | 略快 | 略慢 |
| 适合安全用途 | ❌ 不适合 | ✅ 适合 |
MD5 为什么不安全
2004 年研究者就证明了 MD5 可以人为制造出两个内容不同、哈希值却相同的文件(碰撞)。到今天,构造一次 MD5 碰撞在普通电脑上只需几分钟。这意味着:
- 攻击者可以伪造一个"哈希值和正版一样"的恶意文件;
- 任何靠 MD5 做完整性验证 / 数字签名的逻辑都不可信。
所以凡是涉及"防篡改、防伪造"的地方,MD5 都要退役。
注意区分两种攻击的量级,别被"MD5 破解了"这句话误导:
| 攻击类型 | 含义 | MD5 现状 |
|---|---|---|
| 碰撞攻击 | 找任意两个不同输入同哈希 | ❌ 分钟级可造 |
| 原像攻击 | 给定哈希反推原文 | 仍需 ~2^128,不现实 |
| 第二原像 | 给定原文找另一个同哈希原文 | 比原像略易,仍很贵 |
"MD5 不能防伪"与"MD5 还能查重"并不矛盾——取决于攻击者是否需要指定内容。
SHA256 为什么更稳
SHA256 输出更长、设计更抗碰撞,至今没有实用的碰撞攻击。它广泛用于:
- 文件/固件下载校验(确认没被篡改);
- TLS 证书、区块链、Git 提交指纹;
- 密码存储(配合盐值,但仍建议用 bcrypt/argon2 这类慢哈希)。
那 MD5 还能用吗
能,但只限于"检测意外损坏",比如:
- 下载完比对自己的备份,确认传输没比特翻转;
- 给大文件做个粗略去重标签。
只要场景里没有"人为对抗"(没人故意伪造),MD5 的便利性仍在。一旦涉及安全,换 SHA256。
怎么用工具算哈希
打开 ToolVault 工具匣 的 SHA256 哈希工具 或 MD5 哈希工具:
- 粘贴文本,或选择文件拖入;
- 实时得到对应算法的摘要;
- 比对两段摘要是否一致,即可判断内容是否相同;
- 全程本地计算,文件不上传。
下载开源软件后要校验官方发布的 SHA256 值,用 哈希校验工具 直接粘贴期望值比对,省去肉眼逐位核对;需要带密钥的场景(如接口签名)则用 HMAC 生成器,它是"哈希 + 密钥"的组合,能同时验证完整性和来源。
FAQ
校验下载文件该用哪个?
优先 SHA256(官网通常会提供 SHA256 校验值)。只有老系统只给了 MD5 时,用它粗验传输损坏即可,别拿它当安全凭证。
哈希能"解密"还原原文吗?
不能。哈希是单向的,无论 MD5 还是 SHA256 都无法逆向还原。能"解密"的说法是误区(MD5 也不是加密)。
密码存储能用 SHA256 吗?
不推荐直接用。SHA256 太快,易被暴力破解。密码应用 bcrypt、scrypt 或 Argon2 这类慢哈希加盐。一个直观对比:现代 GPU 对 SHA256 每秒可计算数十亿次,而 bcrypt 通过成本因子把单次哈希拖到几十毫秒——同样的穷举,成本相差十几个数量级。
SHA256 输出为什么是 64 个字符?能更短吗?
256 bit = 32 字节,十六进制表示每字节 2 字符,所以是 64 字符。想更短可以用 Base64 表示(44 字符)或截短使用——但截短会降低碰撞抵抗,每砍 1 bit 安全性减半,普通场景不建议截到 128 bit 以下。
Git 提交为什么还是短的 SHA-1?
Git 用 SHA-1 但只取前几位缩写显示(如 a1b2c3d)。完整 SHA-1 在碰撞攻击下也已告急(2017 年 SHAttered 攻击),Git 社区正在迁移到 SHA-256。日常代码托管风险可控,但如果你要用 Git 做"内容寻址的可信存储"(如发布供应链),要关注这个迁移。
实现注记
选定算法去校验大文件时有个容易忽略的竞态:哈希一算数十秒,期间换文件或换算法,先前的结果可能晚到落到新操作上,变成「文件名 A + 哈希 B」。本站校验工具用自增序号丢弃过期结果——完整性工具自己得先保证结果对得上号。
来自 ToolVault 工具匣 的开发手记。相关工具:SHA256 哈希、MD5 哈希、HMAC 生成。访问 首页 查看更多开发者工具。
相关工具
相关文章
后量子迁移自查清单:从算法盘点到 hybrid TLS,2026 年该做完的 12 件事
后量子密码(PQC)迁移的实操自查框架:三张监管时刻表为什么让 2026 成为起点、算法盘点(CBOM)怎么做、按 HNDL 暴露度排优先级、X25519+ML-KEM 混合 TLS 怎么开,以及 crypto-agility 的工程落地。附 12 项可勾选 checklist。
Passkeys 完全指南:为什么服务器再也存不了你的密码副本
Passkey(WebAuthn/FIDO2)加深:注册与断言仪式、平台认证器与漫游密钥、同步通行密钥取舍、与密码/TOTP/JWT 的关系,以及 origin 绑定如何结构性抗钓鱼。服务器只存公钥;站内无独立 Passkey 工具页的说明。
ML-KEM 入门:Kyber 是怎么进到你的 TLS 握手里的
后量子密钥封装 ML-KEM(FIPS 203,前身 Kyber)的工程向解读:Kyber 到标准名的变迁、封装/解封装语义与 IND-CCA、三档参数尺寸、X25519+ML-KEM 与 TLS 1.3 HKDF 密钥调度的混合方式、ClientHello 膨胀中间盒坑、OpenSSL 3.5 / nginx 开法,以及浏览器侧实现边界。