如何生成 MD5、SHA-256 和 SHA-512 哈希
快速摘要
了解什么是哈希、MD5、SHA-1、SHA-256、SHA-512 的区别与各自用途,以及为什么 MD5 已不安全。一键生成 5 种哈希,纯浏览器运行。
哈希(hash)是把任意长度输入映射为固定长度输出的单向函数——同一输入总产生同一输出,但无法从输出反推输入。MD5、SHA-1、SHA-256、SHA-384、SHA-512 是最常见的几种哈希算法,用途涵盖数据完整性校验、内容寻址和密码存储。你可以在 NeatForge 哈希生成器 一次生成全部 5 种。
什么是哈希?
哈希函数有三个关键特征:
- 确定性:相同输入永远产生相同输出。
- 单向性:从哈希值无法还原原始输入。
- 雪崩效应:输入改一个比特,输出几乎完全变化。
输出通常以 hex(十六进制)字符串表示,如 SHA-256 对空字符串的输出是 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855。哈希不是加密——加密可逆,哈希不可逆。
MD5、SHA-1、SHA-256、SHA-512 对比
- MD5:128 位输出,已破解,仅用于遗留校验和。
- SHA-1:160 位输出,已破解,Git 仍在使用但正迁移到 SHA-256。
- SHA-256:256 位输出,安全,TLS 证书、区块链、密码哈希的默认选择。
- SHA-384:384 位输出,安全,用于高安全场景。
- SHA-512:512 位输出,安全,64 位硬件上对长输入更快。
输出越长,抗碰撞能力越强。“安全”指目前没有已知的实用碰撞攻击。
各自的使用场景
- 校验和:验证文件下载是否完整,MD5 和 SHA-256 都常见,但 SHA-256 更可靠。
- Git 内容寻址:Git 用 SHA-1 标识对象,正在迁移到 SHA-256。
- 密码存储:应使用 bcrypt、argon2 等专门的慢哈希,而非裸 SHA-256;如必须用 SHA,请加盐并迭代。
- 数字签名:TLS 证书和 PDF 签名使用 SHA-256 或 SHA-384。
- 区块链:比特币用 SHA-256 双重哈希标识区块。
为什么 MD5 已不安全?
2004 年王小云团队发表了 MD5 碰撞攻击——可以构造两个内容不同但 MD5 相同的文件。这意味着攻击者能伪造看似合法的签名文件或证书。MD5 已从 TLS、代码签名等场景中退役,绝不应用于密码存储或数字签名。
它仍然出现在遗留系统和校验和场景中,仅作为“是否被意外篡改”的快速检查,而非防恶意对手的安全保证。如果你的系统仍在用 MD5 做安全校验,应尽快迁移到 SHA-256 或更高。
如何生成哈希?
- 打开 哈希生成器。
- 在输入框粘贴文本。
- 点击“计算哈希”,一次得到 MD5、SHA-1、SHA-256、SHA-384、SHA-512。
- 用每行旁边的“复制”按钮取走所需格式。
- 需要大写 hex 时一键切换。
SHA 系列使用浏览器原生 Web Crypto API(crypto.subtle.digest)计算,既快又经过硬件加速。输入以 UTF-8 编码,可正确处理中文和 emoji。
常见问题
MD5 还安全吗? 不安全。MD5 在密码学上已被破解,存在实用碰撞攻击,绝不应用于密码存储、数字签名或任何安全敏感场景。仅用于遗留校验和。
哈希和加密有什么区别? 哈希是单向的,无法从哈希还原原文;加密是双向的,可用密钥解密。哈希用于完整性检查和密码存储,加密用于保护机密性。
SHA-256 和 SHA-512 该选哪个? 两者都安全。SHA-256 更通用、与现代协议兼容性更好;SHA-512 在 64 位硬件上对长输入更快,常用于高安全场景。