HandyTools Hub

哈希生成器

为文本生成 MD5、SHA-1、SHA-256、SHA-512 哈希。

选择算法

输入

输出选项

哈希对比

通过与生成的哈希对比来验证哈希值。

哈希生成器用 MD5、SHA-1、SHA-256 和 SHA-512 把任意文本变成固定长度的「指纹」。工具在输入的同时一次算出全部四种,完全在浏览器里运行。你可以用它确认两份数据完全一致、在发布文件前计算校验和、在联调时复现某个签名,或者看看一个值经过哈希后长什么样。

使用方法

  1. 输入文本到输入框。每敲一次键都会重算所有启用的算法,所以没有提交步骤。
  2. 选择算法:MD5、SHA-1、SHA-256、SHA-512 可以单独启用,也可以全部启用。
  3. 比较摘要。工具以十六进制显示每个哈希,这是 128、160、256 和 512 位输出的惯用表示。
  4. 一键复制你需要的那个。想重新开始就清空输入框——不保留任何数据。

实操示例

示例一——校验一次下载。 厂商在发布文件旁公布了 SHA256SUMS。你下载文件后,在本地运行 sha256sum,再与公布的值比对。若传输途中有一个字节发生变化——无论损坏还是篡改——哈希会完全不同。把一小段样本贴进工具,可以快速确认你比较的字符串长度是否正确;而完整的 ISO 应当用命令行工具来校验。

示例二——比对两份负载。 两个 API 响应在一个隐藏了空白的 diff 工具里看起来一模一样。把两者都哈希后比较:如果 SHA-256 值相同,说明两份负载逐字节一致;不同,就说明有东西变了。这是五秒钟就能完成、胜过翻一千行的检查。

示例三——雪崩效应。 输入 hello,记下 SHA-256 摘要,然后把首字母 H 大写,看它彻底改变。前后没有任何共享的前缀或后缀。正是这个特性,让一小段校验和可以代表整份文档。

哈希函数的工作原理

密码学哈希函数有四个定义性质:

  • 确定性——相同的输入永远产生相同的摘要。
  • 固定长度——无论输入多大,MD5 输出 128 位,SHA-1 输出 160 位,SHA-256 输出 256 位,SHA-512 输出 512 位。
  • 单向性——只拿到摘要,没有任何实用方法还原输入。
  • 雪崩效应——翻转一个输入比特,大约会改变一半的输出比特。

由于输出空间有限,碰撞(两个输入得到同一个哈希)必然存在。区分安全算法与失效算法的,是碰撞能否被故意构造。MD5 碰撞在 2004 年变得可行,SHA-1 在 2017 年步其后尘,这就是如今署名和证书都不再信任它们的原因。SHA-2(SHA-256、SHA-512)历经二十年审视仍未攻破。

如何选择算法

  • MD5 / SHA-1——用于你掌控、且没有对手介入的数据完整性校验。速度快、普及度广,但绝不用于安全用途。
  • SHA-256——校验和、内容寻址以及任何现代完整性检查的合理默认选择。
  • SHA-512——同一家族,输出更长;在 64 位平台上它和 SHA-256 一样快,因此很常见。
  • HMAC-SHA-256——它不是哈希的变体,而是一种把密钥混入过程的构造,用于签名 webhook 和 API 认证。如果你的需求是「证明这条消息来自持有密钥的人」,普通哈希做不到。

常见错误与边界情况

  • 把哈希叫成「加密」。 哈希不可逆,加密可逆。需要拿回原文时,你要的是加密,不是哈希。
  • 用快速哈希存密码。 SHA-256 就是为快而设计的,这方便攻击者每秒猜测数十亿个候选。密码存储需要刻意放慢并加盐的算法,比如 Argon2id、bcrypt 或 scrypt——绝不能用裸的 MD5/SHA。
  • 信任与下载页同在一页的校验和。 它仍能发现传输损坏,但挡不住站点被攻陷的情况。
  • 忽略结尾换行。 hello 和 hello\n 的哈希完全不同。两个本该匹配的值对不上时,先检查有没有看不见的换行或行尾空格。
  • 混用编码。 对可见字符相同的 UTF-8 字符串和 UTF-16 字符串做哈希会得到不同摘要;确保两边对字节编码达成一致。
  • 用 MD5 做签名。 碰撞已被攻破,攻击者可以构造一个与可信文件共享同一 MD5 的恶意文件。请使用 SHA-256 或更强算法。

功能

  • 同时计算 MD5、SHA-1、SHA-256 和 SHA-512
  • 输入即出结果,输出为十六进制
  • 每个摘要都支持一键复制
  • 可离线使用,无需上传或账号
  • 100% 客户端运行,输入不离开浏览器

使用场景

  • 文件校验: 把下载内容与公布的校验和比对。
  • 数据比对: 确认两份负载、导出文件或配置完全一致。
  • API 签名: 复现集成方期望的 HMAC 或摘要。
  • 开发与测试: 生成确定性的测试夹具和缓存键。
  • 变更检测: 记录文档的哈希快照,用于发现后续改动。

相关工具

常见问题

为什么 hello 和 Hello 会生成完全不同的哈希?

密码学哈希函数具有雪崩效应:输入改变一个比特,输出大约一半的比特都会变化,两个摘要之间看不出任何关系。这正是哈希能检测任何改动、哪怕只改一个字符的原因。hello 和 Hello 相差一个比特,所以它们的 SHA-256 值没有任何共同前缀。

文件校验和该用 MD5 还是 SHA-1?

对于你自己掌控、且从可信来源下载的文件,MD5 和 SHA-1 仍能发现意外损坏,这也是它们的常见用途。但两者在安全上都已经失效:实用的 MD5 碰撞在 2004 年出现,SHA-1 碰撞在 2017 年出现,因此无法证明真实性。优先用 SHA-256——成本几乎可以忽略,还省去争论。比对时请用厂商公布的校验和,而不是与下载页同一页上的那个。

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

SHA-256 没有密钥,任何人都能计算。HMAC-SHA-256 把一个密钥混入哈希过程,只有持有密钥的人才能算出相同的值。做完整性校验用普通哈希,认证 webhook 负载、签名 API 请求这类消息用 HMAC。

为什么输出长度固定会带来碰撞问题?

哈希把无限的输入映射到有限的输出,所以碰撞必然存在。对健康的算法来说,碰撞实际上无法找到——SHA-256 大约要试 2^128 次。历史上被攻破的算法,是研究者学会故意构造碰撞的那些,这就是 MD5 和 SHA-1 退出安全领域的原因。

这里的哈希支持二进制文件吗?

这个工具哈希的是你粘贴或键入的文本。要校验下载的文件,请用命令行工具计算哈希——Linux/macOS 上是 sha256sum,Windows 上是 certutil -hashfile——再逐字符与厂商公布的值比对。

为什么不能用 SHA-256 来存密码?

SHA-256 的设计目标就是快,这反而帮了攻击者:他们每秒可以猜测数十亿个候选。密码存储需要故意放慢、并加盐的算法,比如 Argon2id、bcrypt 或 scrypt,绝不能用裸的 MD5/SHA。

由 HandyTools Hub 团队审校 · 最后更新