哈希计算工具
- 选择算法(MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512)。
- 在输入框粘贴或输入文本。
- 在输出框复制生成的哈希值。
帮助与说明
常见问题
哈希和加密是一回事吗?展开收起
应该选哪种算法?展开收起
为什么"同样的文本"算出来不一样?展开收起
可以用 MD5/SHA 存密码吗?展开收起
什么是校验和(checksum),怎么用?展开收起
哈希和 HMAC 有什么区别?展开收起
输入越长,哈希值也越长吗?展开收起
SHA-256 结果有大写小写之分吗?展开收起
如何使用哈希计算工具
- 选择算法(MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512)。
- 在输入框粘贴或输入文本。
- 在输出框复制生成的哈希值。
隐私说明
完整说明
哈希(摘要)是什么?
密码学哈希函数会把任意长度的输入转换为固定长度的指纹。无论输入是空串、一个单词还是整块磁盘镜像,SHA-256 永远输出 256 位(64 个十六进制字符)。
一个安全的哈希函数由三条性质定义:
- 抗原像(preimage resistance)——给定哈希值
h,在计算上不可行找到任何满足hash(m) = h的输入m。这是"单向性"的正式表述。 - 抗第二原像(second-preimage resistance)——给定输入
m1,不可行找到另一个不同的输入m2与之哈希相同。 - 抗碰撞(collision resistance)——不可行找到任意两个
m1 ≠ m2拥有相同哈希。
日常使用中你能感受到的行为:
- 同样的输入 → 同样的输出(确定性)
- 输入微小变化 → 输出面目全非(雪崩效应)
- 输出长度固定,与输入大小无关
- 无法从输出实际反推出输入
注意这个清单里没有"隐藏信息"。如果输入本身可猜(短密码、常见词),哈希不提供任何保护——攻击者逐个哈希候选输入直到撞上即可。
雪崩效应:具体例子
对 hello 和 Hello(只改了一个字母的大小写)做哈希,输出毫无关联:
MD5("hello") = 5d41402abc4b2a76b9719d911017c592
MD5("Hello") = 8b1a9953c4611296a827abf8c47804d7
SHA-256("hello") = 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
SHA-256("Hello") = 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969
一个字符的改动让 256 位输出中约一半的比特发生翻转。这正解释了为什么隐藏空白字符、不同的换行风格(\n vs \r\n)、Unicode 规范化差异都会让"看起来一样"的文本算出不同的哈希——这也是校验和不匹配的头号原因。
算法全景图
| 算法 | 摘要长度 | 状态 | 2026 年的合理用途 |
|---|---|---|---|
| MD5 | 128 位 | 已攻破(普通硬件几秒可造碰撞) | 非对抗性校验、缓存 Key、去重、ETag |
| SHA-1 | 160 位 | 已攻破(2017 年 SHAttered 攻击;2020 年前后实现 chosen-prefix 碰撞) | 仅遗留系统兼容 |
| SHA-256 | 256 位 | 安全 | 默认选择:TLS、JWT、Git、比特币、HMAC |
| SHA-384 / SHA-512 | 384 / 512 位 | 安全 | 更高安全余量;SHA-512 在 64 位 CPU 上往往更快 |
| SHA-3 / BLAKE3 | 可变 | 安全 | 现代替代方案;SHA-3 是完全不同的构造(Keccak 海绵结构),对攻破 SHA-1/MD5 的那类攻击免疫 |
"已攻破"具体指抗碰撞性质失效——攻击者可以构造两个 MD5/SHA-1 相同的文件。用 MD5 对比原作者发布的校验和来验证下载,仍然能检出意外损坏;检不出的是同时伪造了文件和校验和的攻击者。这就是安全敏感场景全面转向 SHA-256 的原因。
长度扩展攻击是另一个更隐蔽的坑:对 Merkle–Damgård 构造的哈希(MD5、SHA-1、SHA-2),任何知道某条消息哈希值的人都能算出"该消息 + 任意后缀"的哈希——而不需要知道原消息内容。所以 SHA-256(密钥 + 消息) 永远不能当签名用。HMAC 正是为消除这个漏洞而设计的。
裸哈希 vs HMAC vs 密码哈希
三件不同的工作,都构建在哈希函数之上:
| 裸哈希 | HMAC | 密码哈希(Argon2/bcrypt/scrypt) | |
|---|---|---|---|
| 是否有密钥 | 无 | 有(共享密钥) | 每用户独立 salt |
| 速度 | 快 | 快 | 刻意做慢 + 吃内存 |
| 证明的事 | 内容是什么 | 内容来自持钥方 | 即使数据库泄露也难以暴力破解 |
| 典型用途 | 校验和、去重、摘要 | API 签名、JWT(HS256)、Webhook | 存储登录凭据 |
密码的 SHA-256 可以在彩虹表里秒查;即使加了 salt,快速哈希也扛不住 GPU 阵列每秒 10¹⁰ 次以上的猜测。密码哈希函数用可调的 CPU 开销和(Argon2/scrypt 的)内存开销对抗这一点,让每次猜测都付出真实代价。
什么时候需要哈希计算器?
- 校验下载内容:对比官方提供的 checksum
- 去重/缓存 Key:同内容得到同摘要
- 数据完整性检测:检测内容在流水线各环节间是否被修改
- API 请求签名准备:基于 HMAC 的签名(AWS Signature v4、Webhook secret)都从精确的摘要开始,本工具可以帮你确认代码实际哈希的到底是什么
- 复现公开示例:上文
SHA-256("hello")的值可以用来对任何哈希实现做正确性抽查
示例
示例 1:对简单文本做哈希
输入 hello,选择 MD5 算法:

示例 2:空格/换行会改变结果
输入 hello 与 hello (多了尾部空格),哈希值完全不同:

安全提示(重要)
- MD5 与 SHA-1 不建议用于安全用途(实用性碰撞攻击已存在)
- 哈希并不会"隐藏信息"。如果原文可猜(短密码、常见词),攻击者可通过穷举/字典碰撞得到原文
- 永远不要用
hash(密钥 + 数据)当签名——请使用对长度扩展攻击免疫的 HMAC - 存密码请使用 Argon2id / scrypt / bcrypt,而不是 MD5/SHA
排错建议
- 结果不符合预期时,优先检查:
- 是否包含隐藏空白字符(空格、
\n、\r\n) - 是否大小写不同
- 是否存在 Unicode 差异/规范化差异(é 可能是一个码点,也可能是
e+ 组合重音符) - 编码:本工具对 UTF-8 字节做哈希;另一个工具若按 UTF-16 或 Latin-1 字节计算,结果必然不同
- 是否包含隐藏空白字符(空格、
- 确保你计算的就是"期望的那段文本"
相关工具
阿里云 AI Agent 零代码部署 · 68 元起
轻量服务器 + Token Plan 组合购,分钟级部署 OpenClaw/Hermes AI 助手,7×24 小时在线、不限流量、数据自主可控,支持 11 款主流大模型