哈希计算器
加密使用 Web Crypto 计算 SHA-1/256/384/512,以及 MD5。输出 Hex 或 Base64。
本页内容
什么是哈希?#
密码学哈希是一种针对任意字节的「单向指纹」。你把任意长度的内容喂进去,得到一段固定长度的摘要(digest)。这段摘要就像原始数据的签名:只要改动一个比特,输出就会面目全非。哈希能同时回答两个实际问题——「这段数据有没有被改过?」和「我能不能用一段简短稳定的标识来指代这段数据?」——这正是它被广泛用于文件完整性校验、内容寻址、去重以及密码存储的根本原因。
本页支持五种算法:SHA-2 家族(SHA-256、SHA-384、SHA-512)、SHA-1 以及 MD5。其中四个 SHA 变体走浏览器原生的 Web Crypto 引擎(crypto.subtle.digest),也就是生产代码用的同一套底层实现,而非 JavaScript 的重新实现。MD5 不在 Web Crypto 之列,所以它在你真正选中时才会按需加载,不会拖慢首屏。
要特别强调:哈希不是加密。它是不可逆的——你无法从摘要反推出原文。如果你需要两方共享一个带密钥的摘要,请用 HMAC;如果你需要能把结果还原回来,请用对称加密。
怎么使用#
- 把输入内容粘贴到左侧文本框。任意文本都行——一段字符串、一份 JSON、一段配置。这些字节会先按 UTF-8 编码再进入哈希。
- 选择算法:
- SHA-256 —— 现代默认;256 位摘要,从 TLS、Git 到区块链都在用。
- SHA-384 / SHA-512 —— 同族但更长的摘要;规范明确要求时再选。
- SHA-1 —— 160 位;偏老,做校验和没问题,但已不适合抗碰撞的签名场景。
- MD5 —— 128 位;速度快、随处可见,但密码学上已被攻破。仅适合不涉及安全的校验和与遗留缓存键。
- 选择输出编码:hex(小写十六进制,摘要的通用写法)或 base64(更紧凑,常见于令牌)。
- 点击 Sample 载入标准测试串,或 Clear 重来。右侧会实时刷新摘要,Copy 即可复制。
核心特性#
- 原生 Web Crypto。 SHA-1/256/384/512 由
crypto.subtle.digest计算——浏览器自带的、经过审计的实现,而非第三方库。 - MD5 按需加载。 只有你选中 MD5 时才会去拉取它的实现,首屏永远不会被它拖累。
- hex 或 base64。 一键切换,无需重新输入。
- 实时状态栏。 显示当前算法与摘要字节数,截断或长度不对一眼可见。
- 零上传。 全程在浏览器内完成,输入绝不离开本页。
实战示例#
标准参考串是 The quick brown fox jumps over the lazy dog。算法设为 SHA-256、输出 hex 时,摘要为:
d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
同一串在 SHA-1(hex)下:
2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
一个值得记住的边界情况是空串:对「什么都没有」做哈希,依然会得到一段确定且非空的摘要——SHA-256 为 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,MD5 为 d41d8cd98f00b204e9800998ecf8427e。这些空输入向量也是本工具自身测试套件用来验证正确性的——如果你的结果对不上,说明页面被篡改过。
常见问题#
SHA-256 还是 MD5,我该选哪个?#
凡涉及安全就选 SHA-256:密码加盐方案、签名 URL、完整性证明、需要抗碰撞的内容标识。MD5 仅在没有对手、没人想伪造碰撞的场景下可接受(一句「这文件改没改」的快速检查、一个缓存键)。拿不准就默认 SHA-256。
为什么同样的输入每次结果都一样?#
哈希是确定性的——这一层没有随机盐(不像 bcrypt)。这种确定性正是内容寻址的基石:同样的字节必须得到同样的指纹。反面则是:两个人对同一个口令做哈希会得到同样的摘要,所以「光哈希、不加盐」是存储口令的灾难做法。
能从哈希反推出原文吗?#
不能。密码学哈希在设计上就是单向函数,没有密钥、也没有逆运算。「解密一段 SHA-256」本身就是个伪命题。唯一的攻击方式是暴力枚举(不断试输入直到撞上),而这正是即便加了盐、弱口令依然危险的原因。
为什么我的 MD5 和常用工具对不上?#
几乎总是字节表示不一致:末尾多了换行、换行符风格不同(CRLF 对 LF),或者对方哈希的是 UTF-16 表示而本页哈希的是 UTF-8。去比原始字节,而不是屏幕上的文字。