广告

哈希计算工具

  1. 选择算法(MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512)。
  2. 在输入框粘贴或输入文本。
  3. 在输出框复制生成的哈希值。

帮助与说明

常见问题

哈希和加密是一回事吗?展开
不是。哈希通常是单向的,无法"解密"回原文;加密一般可通过密钥解密还原。哈希无论输入多长都输出固定长度的指纹。
应该选哪种算法?展开
安全相关用途优先使用 SHA-256 或 SHA-512。MD5 与 SHA-1 因存在实用性碰撞攻击已被认为不安全。非安全用途(校验和、缓存 Key、去重)用 MD5 依然没问题且速度更快。
为什么"同样的文本"算出来不一样?展开
大概率是输入并不完全一致:是否多了空格/换行、大小写不同、编码不同(UTF-8 vs UTF-16、Unicode 规范化形式差异)都会让哈希完全改变。
可以用 MD5/SHA 存密码吗?展开
绝对不要用裸哈希,加盐的快速哈希也不行——MD5/SHA 太快了,GPU 每秒能测试上百亿次猜测。存密码必须用 Argon2id、scrypt 或 bcrypt 这类专用密码哈希算法,并为每个用户生成唯一 salt。
什么是校验和(checksum),怎么用?展开
校验和通常是用哈希做的完整性指纹。把官方提供的 checksum 与你下载文件后计算出的结果对比,用于判断内容是否被篡改或损坏。
哈希和 HMAC 有什么区别?展开
裸哈希没有密钥,任何知道输入的人都能算出同样的值。HMAC(基于哈希的消息认证码)把密钥混入哈希,只有持有密钥的一方才能生成和验证,广泛用于 API 签名和 JWT(HS256)。
输入越长,哈希值也越长吗?展开
不会。固定长度摘要正是哈希的核心设计:无论输入是一个词还是 10GB 文件,SHA-256 都输出 256 位(64 个十六进制字符)。这也意味着碰撞必然存在,抗碰撞是刻意设计出来的性质。
SHA-256 结果有大写小写之分吗?展开
摘要本质是原始字节,十六进制只是展示约定。本工具输出小写。对比校验和时建议忽略大小写——仅大小写不同的两个值不是真正的不匹配。

如何使用哈希计算工具

  1. 选择算法(MD5 / SHA-1 / SHA-256 / SHA-384 / SHA-512)。
  2. 在输入框粘贴或输入文本。
  3. 在输出框复制生成的哈希值。

隐私说明

完整说明

哈希(摘要)是什么?

密码学哈希函数会把任意长度的输入转换为固定长度的指纹。无论输入是空串、一个单词还是整块磁盘镜像,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 年的合理用途
MD5128 位已攻破(普通硬件几秒可造碰撞)非对抗性校验、缓存 Key、去重、ETag
SHA-1160 位已攻破(2017 年 SHAttered 攻击;2020 年前后实现 chosen-prefix 碰撞)仅遗留系统兼容
SHA-256256 位安全默认选择:TLS、JWT、Git、比特币、HMAC
SHA-384 / SHA-512384 / 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 款主流大模型

立即查看