哈希是什么?
哈希(Hash)会把任意长度的数据计算成一串固定长度的“指纹”。同样的输入一定得到同样的结果,只要改一个字符,结果就会完全不同,而且无法从结果反推出原文。常用来检查文件是否完整、比对数据是否被修改、生成缓存的标识等。
如何使用
- 选择算法,或选“全部算法”一次算出全部结果。
- 在左边输入内容。开启“自动计算”时,停止输入后会自动生成结果。
- 按需调整“输入编码”与“输出格式”,或启用 HMAC 并输入密钥。
算法对比
| 算法 | 长度(Hex) | 适合用途 |
|---|---|---|
| MD5 | 32 个字符 | 文件校验、缓存 key;已不安全,不要用在安全相关场景 |
| SHA-1 | 40 个字符 | 兼容旧系统(例如 Git);已不建议用在安全相关场景 |
| SHA-256 | 64 个字符 | 目前最常用,适合大多数场景 |
| SHA-384 / SHA-512 | 96 / 128 个字符 | 需要更长结果的场合 |
HMAC 是什么?
HMAC 是“加上密钥的哈希”,只有知道密钥的人才能算出相同结果。很多服务用它来签名 API 请求、验证 Webhook 确实来自对方,例如支付平台、GitHub、LINE 都使用 HMAC-SHA256。启用 HMAC 后输入密钥即可计算;密钥可以是普通文本、Hex 或 Base64。
输入编码与输出格式
- 输入编码:同一段文本用不同编码,得到的字节不同,哈希结果也就不同。一般使用 UTF-8;输入 Hex 或 Base64 时,表示要计算的是它们所代表的原始字节。
- 输出格式:Hex(小写或大写)或 Base64。不少 API 签名要求 Base64 格式。
示例
abc的 MD5:900150983cd24fb0d6963f7d28e17f72abc的 SHA-256:ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad- 密钥
key、内容The quick brown fox jumps over the lazy dog的 HMAC-SHA256:f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8
文件哈希与比对
- 文件哈希:把文件拖到输入区,或点「选择文件」(最大 200 MB),会直接以文件内容计算,常用于确认下载的文件是否完整。
- 比对:把下载网站提供的哈希值粘贴到「比对预期的哈希值」,会显示一致或不一致;Hex 不区分大小写。选「全部算法」时,会告诉你是哪一个算法一致。
常见问题
哈希可以解密吗?
不行。哈希是单向运算,不存在“解密”。网上所谓的“MD5 解密”,其实是用大量常见字符串事先算好的结果来比对,所以简单的密码很容易被查出来。
为什么和其他工具算出来的结果不同?
通常是输入内容有细微差异:多了空格或换行、换行符不同(Windows 的 CRLF 与 Unix 的 LF),或是文本编码不同。请确认输入完全相同,并使用相同的输入编码。
可以用 MD5 或 SHA-256 存储用户密码吗?
不建议。这些算法计算很快,攻击者也能快速大量尝试。存储密码应使用专为密码设计的 bcrypt、scrypt 或 Argon2。
HMAC 密钥会被保存吗?
不会。计算在你的浏览器中完成;本站会记住你的输入与设置,但 HMAC 密钥刻意不记忆,刷新后需要重新输入。