Menu

哈希生成器

即时生成 MD5、SHA-1、SHA-256、SHA-384 和 SHA-512 哈希值。

作者 Nethanel Bar, Co-founder & CEO

最后更新

准备好真正学会编程了吗?

Coddy 让你在浏览器里编写真实代码来学习:互动课程、即时反馈,卡住时还有 AI 帮忙。

哈希生成器是什么?

哈希生成器会计算出一个哈希值:某个输入的简短、固定长度的“指纹”。哪怕只差一个字符,指纹也会大幅变化,所以哈希被用来校验文件完整性、在不完整比较的情况下判断两个值是否相等、构建内容寻址系统(Git 使用 SHA-1/SHA-256),也是更大型安全协议中的基础组件。

一个好的加密哈希函数有三个特性:确定性(同样的输入 → 同样的哈希值)、单向性(无法从哈希值还原输入)和抗碰撞性(几乎不可能找到两个哈希值相同的输入)。SHA-256 和 SHA-512 等现代算法满足全部三点;MD5 和 SHA-1 等老算法已经被攻破,不应该用于涉及安全的比较。

哈希不是加密。加密可以用密钥还原;哈希在设计上就是单向的。哈希本身也不是存储密码的机制:密码需要 bcrypt、scrypt 或 Argon2 这样的密码哈希,它们会刻意提高暴力破解的成本。

生成哈希时你会学到什么

  • 哈希函数会把任意输入(不论长短)映射成固定长度的输出(例如 SHA-256 总是输出 256 位 = 64 个十六进制字符)。
  • 同样的输入总是得到同样的哈希值。哪怕只改动一个比特,也会得到完全不同的哈希值(即“雪崩效应”)。
  • MD5 和 SHA-1 已经不再抗碰撞:用作与安全无关的校验和没问题,但用于签名、证书或任何与信任相关的场景都不安全。
  • 不要用普通的 SHA-256 存储密码。请使用带盐值、并且刻意设计得很慢的密码哈希(bcrypt、scrypt、Argon2)。

如何一步步生成哈希值

  1. 粘贴输入

    粘贴任意文本:一个字符串、一段 JSON、一个许可证密钥。哈希值会随着输入实时更新。

  2. 选择算法

    选择 MD5、SHA-1、SHA-256、SHA-384 或 SHA-512。对于通用校验和,SHA-256 是最安全的默认选择。

  3. 查看输出

    哈希值以小写十六进制显示。可以切换成大写,或把值复制到剪贴板。

  4. 需要时比较两个哈希值

    粘贴一个已知的哈希值(来自下载页面、Git 提交或校验和文件),工具会告诉你是否匹配。

哈希算法速查表

最常见的几种算法,以及它们的输出长度和当前的安全状况。SHA-1 的规范见 RFC 3174;SHA-2 系列的规范见 NIST FIPS 180-4。

算法输出长度状况 / 常见场景
MD5128 位 / 32 个十六进制字符已攻破:只适合与安全无关的校验和
SHA-1160 位 / 40 个十六进制字符已攻破:仅见于 Git 历史和老旧系统
SHA-256256 位 / 64 个十六进制字符标准:TLS、新版 Git、区块链
SHA-384384 位 / 96 个十六进制字符用于偏好 SHA-2 系列的 TLS 加密套件
SHA-512512 位 / 128 个十六进制字符强:在 64 位硬件上有时比 SHA-256 更快
bcrypt / scrypt / Argon2不固定密码哈希:存储密码请用这些,而不是 SHA-x

可以试试的哈希示例

同一算法,输入只改一点

输入 A

hello world

SHA-256(A)

b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

输入 B

Hello world

SHA-256(B)

4ae7c3b6ac0beff671efa8cf57386151c06e58ca53a78d83f36107316cec125f

只改了一个大写字母,哈希值就完全不同了。这就是“雪崩效应”,正是这个特性让哈希可以用来检测改动。

校验下载文件的校验和

官方公布的校验和
SHA256: 3a7bd3e2360a3d290dd0b1aef6a04e9b… ubuntu.iso
操作流程

计算你下载的文件的 SHA-256,再和发布方给出的值对比。一致就说明文件在传输中没有损坏,也没有被篡改。

操作系统镜像、编程语言运行时和签名发布包的下载页面,通常会在文件旁边公布 SHA-256。安装前一定要校验。

用 MD5 做与安全无关的去重

输入

user@example.com

MD5

b58996c504c5638798eb6b511e6f49af

Gravatar 用 MD5(email) 作为头像的键。MD5 用在这种非机密的标识符上没问题,但凡是碰撞或原像攻击会造成影响的地方,都不要用它。

常见的哈希错误

  • 用普通的 SHA-256 存储用户密码。请使用密码哈希(bcrypt、scrypt、Argon2),并为每个用户加盐,设置有意为之的计算成本。
  • 在 2026 年还把 MD5 或 SHA-1 用于涉及安全的比较。两者都已被攻破,碰撞已经可以实际算出来。
  • 对其中一个字符串做过处理后,直接用 == 比较十六进制哈希值。比较前先去掉空白并统一大小写。
  • 忘了同样的输入总是得到同样的哈希值,而这正是哈希的意义所在。不要指望“哈希两次”能增加随机性,你只会得到第二个确定的哈希值。
  • 在真正需要加密的地方用了哈希。哈希是单向的,无法还原。

哈希生成器常见问题

哈希函数是什么?

哈希函数接收任意长度的输入,生成一个固定长度的输出,叫作哈希值。同样的输入总是得到同样的哈希值;输入哪怕只有一点点变化,哈希值也会完全不同。

MD5 现在还安全吗?

MD5 在密码学用途上已经被攻破,实际的碰撞很容易算出来。它仍可用于与安全无关的校验和(文件去重、缓存键、Gravatar),但绝不能用于签名、证书或密码存储。

SHA-256 和 SHA-512 有什么区别?

两者都属于 SHA-2 系列。SHA-256 输出 256 位;SHA-512 输出 512 位。在 64 位硬件上,SHA-512 实际可能更快。如今各种协议更常用 SHA-256 作为默认选择。

密码应该怎么做哈希?

不要直接用 SHA-256。请使用专门为此设计的密码哈希(bcrypt、scrypt 或 Argon2),为每个用户加盐,并设置可调的计算成本。它们刻意设计得很慢,让暴力破解代价高昂。

哈希值可以还原吗?

不可以,哈希函数在设计上就是单向的。想得到原始输入,唯一的办法是不断猜测输入,再检查它们的哈希值是否匹配。所以对密码来说,加盐和慢速哈希才那么重要。

这些哈希值是在本地生成的吗?
是的。Coddy 的哈希生成器使用你浏览器中的 Web Crypto API。你的输入不会离开你的设备。

了解更多

其他开发者工具

Coddy 编程语言插图

和 Coddy 一起学编程

开始