如何生成安全哈希(MD5、SHA-1、SHA-256、SHA-512)
为场景选对哈希算法、一键校验文件完整性,并理解为何 MD5 适合做缓存键却不适合做口令。

为什么这个工具重要
你下载了一个 4 GB 的 ISO,下载「成功」结束,但中途 Wi‑Fi 抖了一下。有没有翻转过一个字节?对文件计算 SHA-256 并与发布方公布的摘要比对:一致则字节级无损;不一致则重新下载。同样的逻辑支撑着内容寻址存储(Git 对象库、IPFS)、备份软件去重以及构建流水线的篡改检测。
三个真实场景
把文件拖进哈希工具,将 SHA-256 与项目 Release 页上的值比对。
确信二进制未被篡改
对规范化后的请求串做 MD5,得到快速、定长的缓存键。
缓存命中且无多余碰撞
对扣押文件计算 SHA-512 写入案件日志;日后任何改动都会暴露。
形成保管链记录
操作演练
打开 哈希生成器。
选择文本或文件输入
文本:粘贴字符串。文件:从磁盘拖入。浏览器在本地哈希(受内存限制)。
选择算法
MD5(快、安全上已破)、SHA-1(已弃用)、SHA-256(现代默认)、SHA-512(摘要更长,多数时候不必)。
阅读摘要
默认十六进制。若对接方要 Base64,可切换输出格式。
与已知摘要比对
将期望值粘贴到比对栏;工具会高亮匹配或不匹配。
复制并记录
把摘要连同文件路径与时间戳存档,便于日后复查。
输入
The quick brown fox jumps over the lazy dog摘要
MD5 : 9e107d9d372bb6826bd81d3542a419d6
SHA-1 : 2fd4e1c67a2d28fced849ee1bb76e7391b93eb12
SHA-256 : d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
SHA-512 : 07e547d9586f6a73f73fbac0435ed76951218fb7d0c8d788a309d785436bbb64...
实用技巧
- 务必从受 TLS 保护的页面复制官方摘要,而非论坛转载。否则中间人可能同时换掉文件与哈希。
- 默认用 SHA-256。 现代 CPU 上速度快,输出 64 个十六进制字符,适合放进 URL 与日志。
- 口令存储请用 bcrypt/scrypt/argon2,不要用 SHA。 SHA 对口令哈希过快 —— 「慢」才是特性。
- 哈希规范化形态。 若哈希 JSON 请求体,先统一键序(可先经 文本格式化),缓存键才稳定。
常见陷阱
常见误区
两个文件的 MD5 相同 —— 需要担心吗?
对随机文件,MD5 碰撞仍然罕见。在对抗性场景(有人刻意构造碰撞文件)下 MD5 已破 —— 请换 SHA-256。
常见误区
哈希不同只因末尾换行
用十六进制查看器或比对长度。常见元凶是 \r\n vs \n。若来源平台不同,哈希前先统一换行。
常见误区
超大文件的 SHA-512 会让浏览器卡顿
页面使用 Web Worker,但多 GB 文件仍可能拖慢标签页。可关掉其他标签,或对巨型文件改用 CLI(sha256sum)。
不适合用本工具的情况
- 加密文件 — 需要算法与密钥,不是哈希。
- 口令存储 — 请使用带盐的慢 KDF(bcrypt/scrypt/argon2),不要裸 SHA。
- 带密钥的认证摘要 — 需与密钥结合(HMAC)。参见 如何计算 HMAC 签名。
常见问题
MD5 和 SHA-1 完全不能用吗?
在非安全场景(缓存键、去重、ETag)仍可用。凡是对手可能构造输入的地方,请用 SHA-256 或更强算法。
为什么 Windows 上文件哈希常是大写?
大小写纯属外观。比对十六进制摘要时请忽略大小写。
拖入文件会上传吗?
不会。浏览器通过 File API 读文件,经 WebCrypto SubtleCrypto.digest() 计算;数据不会发往服务器。