Hash 生成器 — 在线生成 SHA-256、SHA-512 等哈希值
粘贴任何文本,立刻得到 SHA-1、SHA-256、SHA-384、SHA-512 哈希值。使用 Web Crypto API,数据留在浏览器里,不会发到服务器。适合文件完整性校验、密码存储验证和 API 签名调试。
生成 MD5、SHA-1、SHA-256 等哈希值
输入要哈希的文本
生成 MD5、SHA-1、SHA-256 等哈希值
SHA-1
160 bits
SHA-256
256 bits
SHA-384
384 bits
SHA-512
512 bits
生成各种哈希值
哈希到底在干什么
哈希函数接受任何输入——一个字符或 10GB 文件——产生固定长度的输出("摘要")。SHA-256 无论输入多大,输出永远是 64 个十六进制字符。相同输入永远得到相同哈希,但改变一个比特,输出就完全不同。这就是"雪崩效应"。
关键特性:哈希是单向的。你无法从 SHA-256 哈希反推出原始输入。这就是它用于密码存储的原因——你存哈希,不存密码。用户登录时,你对输入做哈希然后比较哈希值。
SHA-256 属于 SHA-2 家族,定义在 FIPS 180-4(NIST 发布)。它用于比特币挖矿、TLS 证书、Git commit ID 和大多数 API 签名方案。SHA-1 在安全方面已被废弃(2017 年 Google 的 SHAttered 项目发现了碰撞),但仍用于非安全性校验如 Git 对象哈希。
使用方法
- 在输入框中粘贴或输入文本。
- 所有哈希算法同时计算——不需要先选一个。
- 一键复制你需要的哈希值。
- 文件哈希的话,粘贴文件内容或用命令行工具 sha256sum。
什么时候会用到
下载后验证文件完整性
下载了 ISO 或二进制文件?发布者会列出 SHA-256 哈希。把文件内容粘贴进来(或用 CLI 的 sha256sum)对比。哈希匹配说明文件在传输过程中没有损坏或被篡改。
调试 API 签名生成
很多 API(AWS、Stripe、webhook)要求 HMAC-SHA256 签名。当你的签名不匹配时,把待签名字符串粘贴进来逐步验证中间哈希值。
检查密码是否出现在泄露数据库中
HaveIBeenPwned 的 API 用 SHA-1 前缀匹配(k-匿名性)。对密码做 SHA-1 哈希,把前 5 个字符发给他们的 API,检查完整哈希是否在响应中。这个工具给你起始的 SHA-1。
从内容生成确定性 ID
需要一个每次都相同的内容唯一 ID?对内容做 SHA-256 哈希。相同内容 = 相同哈希 = 相同 ID。用于内容寻址存储、缓存键和去重。
需要知道的事
永远不要用普通哈希存密码
SHA-256 很快——这对密码来说是坏事。攻击者用 GPU 每秒能试数十亿个 SHA-256 哈希。密码用 bcrypt、scrypt 或 Argon2——它们故意很慢(每次哈希 100ms+),让暴力破解不现实。
SHA-1 安全性已破,校验用途没问题
Google 在 2017 年演示了 SHA-1 碰撞(SHAttered)。不要用 SHA-1 做数字签名或证书。但非安全用途如 Git 对象 ID 或缓存失效,还是没问题的——没人会花 10 万美元来伪造你的缓存键。
相同输入 = 相同哈希,永远如此
哈希是确定性的。今天对 "hello" 做 SHA-256 和 10 年后做,得到相同输出。这就是它用于验证的原因。但也意味着相同密码产生相同哈希——所以存密码前要加随机盐。
哈希长度不等于安全级别
SHA-256 输出 256 位但提供 128 位碰撞抗性(生日攻击)。SHA-512 输出 512 位有 256 位碰撞抗性。大多数应用 SHA-256 绰绰有余。
示例
简单字符串的 SHA-256
经典测试——对 "hello" 做哈希验证你的实现是否正确。
Input
helloOutput
2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824改一个字符 = 完全不同的哈希
演示雪崩效应——"hello" vs "Hello"(大写 H)。
Input
HelloOutput
185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969功能特点
- 同时计算 SHA-1、SHA-256、SHA-384、SHA-512
- 使用 Web Crypto API——加密学正确的实现
- 输入时实时显示结果——不需要点按钮
- 每种算法的输出一键复制
- 100% 浏览器运行——零网络请求
- 免费,不用注册,不追踪
常见问题
能"解密"或反转哈希吗?
不能。哈希函数在数学上是单向的。你无法从输出计算出输入。"破解"哈希的唯一方法是猜测输入直到匹配(暴力破解)或使用预计算表(彩虹表)。这就是为什么长的随机密码很重要。
该用 SHA-256 还是 SHA-512?
大多数情况 SHA-256 就够了。SHA-512 在 64 位系统上稍快且产生更长的哈希,但两者都提供足够的安全性。除非有特定原因(如匹配现有系统要求),否则用 SHA-256。
为什么不能直接用 SHA-256 存密码?
因为太快了。现代 GPU 每秒能计算约 100 亿个 SHA-256 哈希。8 位密码有约 6×10^15 种组合——大约 7 天就能破解。bcrypt/Argon2 故意很慢(每次哈希约 100ms),让同样的攻击需要数千年。
哈希和加密有什么区别?
加密是可逆的(有密钥)。哈希不可逆。加密:明文 → 密文 → 明文。哈希:输入 → 哈希(无法回去)。需要恢复原始数据用加密,只需要验证数据匹配而不存储原始数据用哈希。
SHA-1 还安全吗?
用于安全(签名、证书):不安全,2017 年已演示碰撞攻击。用于非安全用途(校验和、缓存键、Git):没问题。攻击成本约 10 万美元计算资源,且需要非常特定的场景,不适用于日常校验用途。
使用技巧与相关工作流
- 生成安全密码并进行哈希存储,请使用我们的密码生成器.
- 在生成哈希的同时创建唯一标识符,请使用我们的UUID 生成器.
- 将哈希输出编码以便安全传输到 URL 中,请使用我们的Base64 编解码.
- 格式化包含哈希值的 JSON 数据,请使用我们的JSON 格式化.