哈希在线计算
运算全部在本页完成,输入内容不会发往服务器
怎么用
- 把文本粘到左边,选好算法(默认 SHA-256),点「计算」。
- 结果区右上角可一键复制;下方的明细会同时给出字节数与耗时。
- 要核对一段已知摘要,把它粘进「对比校验」,页面会直接判断一致还是不一致(大小写、首尾空格都忽略)。
先纠正一个高频说法:MD5 不是加密
「MD5 加密」是搜索量最大的写法,但它在概念上是错的。加密是可逆的:有密钥就能把密文还原成原文。而哈希(摘要)是单向的:无论输入多长,输出都是固定长度的一串十六进制,而且没有任何办法从输出反推出输入。所以 MD5 的产物不该叫密文,叫摘要或指纹更准确——它的用途是「校验」和「比对」,不是保密。
四个算法怎么选
- MD5:128 位、32 个十六进制字符。早就被证明可以人为构造碰撞(两段不同内容得到同一个 MD5),不能用于签名、口令存储这类安全场景。但它在「校验下载是否完整」「判断两份内容是否相同」上依然够用且快。
- SHA-1:160 位、40 字符。同样已被攻破(谷歌 2017 年的 SHAttered 就是一次真实的碰撞),新系统不应再选它。
- SHA-256:256 位、64 字符。目前没有实用的碰撞攻击,是通用场景的默认选择(Git 的内容寻址、区块链、TLS 证书都在用它这一族)。
- SHA-512:512 位、128 字符。安全性更高、输出更长,在 64 位机器上往往还更快;除非要节省存储,否则没必要刻意避开。
口令为什么不能直接哈希
即使换成 SHA-256,把用户口令直接哈希一遍存进数据库也是不安全的:攻击者可以预先算好海量常见口令的摘要(彩虹表),或每秒尝试上百亿次(现代 GPU)。正确做法是用专门的慢哈希——bcrypt、scrypt、Argon2——它们故意设计得慢,并且每个口令配一个独立的盐。这些算法本页不提供,也不该在浏览器里做。
同一段文本,结果永远是同一个
哈希是确定性的:abc 在任何机器、任何时间算出来都是 ba7816bf…(SHA-256)。也正因为如此,改动一个字符结果就会完全不同(雪崩效应),而空格的增减、换行符是 \n 还是 \r\n,都会算出另一个摘要。发现「比对不一致」时,先检查这两处——绝大多数不一致都是多了一个换行。
这个页面的边界
它只处理文本,不处理文件;真要核对一个几百 MB 的安装包,请用系统自带的 certutil -hashfile(Windows)、shasum -a 256(macOS)或 sha256sum(Linux)。另外 SHA 系列依赖浏览器的 Web Crypto 接口,它要求页面运行在 HTTPS 或 localhost 下;如果本页是通过 http:// 打开且不是 localhost,SHA 会不可用,这时 MD5 仍然可用——它由页面内的实现直接计算。
关于数据安全
计算过程全部发生在这个页面里,没有任何请求发往服务器,结果也不写入任何存储。你可以断网后重试来验证这一点。不过仍要提醒:把口令、令牌、私钥粘贴进任何一个网页之前,都值得先确认它确实是本地计算的。
和其他工具配合
要核对的是接口返回里的某个字段时,先用JSON 在线工具把它挑出来;要批量比对一串摘要,用正则在线测试检查格式是否为 64 位小写十六进制会更省事。