哈希生成器
为文本生成 MD5、SHA-1、SHA-256、SHA-512 哈希。
选择算法
输入
将文件拖放到此处或点击浏览
输出选项
结果
哈希对比
通过与生成的哈希对比来验证哈希值。
为文本生成 MD5、SHA-1、SHA-256、SHA-512 哈希。
将文件拖放到此处或点击浏览
通过与生成的哈希对比来验证哈希值。
哈希生成器用 MD5、SHA-1、SHA-256 和 SHA-512 把任意文本变成固定长度的「指纹」。工具在输入的同时一次算出全部四种,完全在浏览器里运行。你可以用它确认两份数据完全一致、在发布文件前计算校验和、在联调时复现某个签名,或者看看一个值经过哈希后长什么样。
示例一——校验一次下载。 厂商在发布文件旁公布了 SHA256SUMS。你下载文件后,在本地运行 sha256sum,再与公布的值比对。若传输途中有一个字节发生变化——无论损坏还是篡改——哈希会完全不同。把一小段样本贴进工具,可以快速确认你比较的字符串长度是否正确;而完整的 ISO 应当用命令行工具来校验。
示例二——比对两份负载。 两个 API 响应在一个隐藏了空白的 diff 工具里看起来一模一样。把两者都哈希后比较:如果 SHA-256 值相同,说明两份负载逐字节一致;不同,就说明有东西变了。这是五秒钟就能完成、胜过翻一千行的检查。
示例三——雪崩效应。 输入 hello,记下 SHA-256 摘要,然后把首字母 H 大写,看它彻底改变。前后没有任何共享的前缀或后缀。正是这个特性,让一小段校验和可以代表整份文档。
密码学哈希函数有四个定义性质:
由于输出空间有限,碰撞(两个输入得到同一个哈希)必然存在。区分安全算法与失效算法的,是碰撞能否被故意构造。MD5 碰撞在 2004 年变得可行,SHA-1 在 2017 年步其后尘,这就是如今署名和证书都不再信任它们的原因。SHA-2(SHA-256、SHA-512)历经二十年审视仍未攻破。
hello 和 hello\n 的哈希完全不同。两个本该匹配的值对不上时,先检查有没有看不见的换行或行尾空格。密码学哈希函数具有雪崩效应:输入改变一个比特,输出大约一半的比特都会变化,两个摘要之间看不出任何关系。这正是哈希能检测任何改动、哪怕只改一个字符的原因。hello 和 Hello 相差一个比特,所以它们的 SHA-256 值没有任何共同前缀。
对于你自己掌控、且从可信来源下载的文件,MD5 和 SHA-1 仍能发现意外损坏,这也是它们的常见用途。但两者在安全上都已经失效:实用的 MD5 碰撞在 2004 年出现,SHA-1 碰撞在 2017 年出现,因此无法证明真实性。优先用 SHA-256——成本几乎可以忽略,还省去争论。比对时请用厂商公布的校验和,而不是与下载页同一页上的那个。
SHA-256 没有密钥,任何人都能计算。HMAC-SHA-256 把一个密钥混入哈希过程,只有持有密钥的人才能算出相同的值。做完整性校验用普通哈希,认证 webhook 负载、签名 API 请求这类消息用 HMAC。
哈希把无限的输入映射到有限的输出,所以碰撞必然存在。对健康的算法来说,碰撞实际上无法找到——SHA-256 大约要试 2^128 次。历史上被攻破的算法,是研究者学会故意构造碰撞的那些,这就是 MD5 和 SHA-1 退出安全领域的原因。
这个工具哈希的是你粘贴或键入的文本。要校验下载的文件,请用命令行工具计算哈希——Linux/macOS 上是 sha256sum,Windows 上是 certutil -hashfile——再逐字符与厂商公布的值比对。
SHA-256 的设计目标就是快,这反而帮了攻击者:他们每秒可以猜测数十亿个候选。密码存储需要故意放慢、并加盐的算法,比如 Argon2id、bcrypt 或 scrypt,绝不能用裸的 MD5/SHA。
由 HandyTools Hub 团队审校 · 最后更新