工作原理
SHA-256 属于美国国家安全局设计、NIST 于 2001 年发布的 SHA-2 家族。它先对输入做填充,切成 512 位的分组,再对每组执行 64 轮压缩函数——由按位旋转、模加法和一组取自前 64 个质数立方根的固定常量构成。输出是 256 位摘要,即 64 个十六进制字符,具备雪崩效应:输入改变一个比特,输出大约一半的比特都会翻转。
MD5 和 CRC32 是出于兼容性而保留的,并非为了安全。MD5 产生 128 位摘要,自 2004 年起已被成功构造碰撞;CRC32 是 32 位循环冗余校验,设计目的仅仅是发现传输错误。但两者仍在使用:S3 的 ETag、ZIP 条目、PNG 数据块、静态资源指纹文件名以及旧版 API 签名都依赖它们,所以工具箱里仍然值得保留。HMAC-SHA256 则是用密钥包裹 SHA-256,摘要同时证明完整性与密钥持有者身份——这正是 AWS SigV4、Stripe Webhook 和 JWT HS256 背后的机制。
本工具全部通过 Web Crypto API 在本地执行,浏览器未原生提供的 MD5 与 CRC32 由紧凑的 JavaScript 实现补齐。文件路径使用 File.slice() 按 4 MB 分块读取并送入流式哈希器,因此无论文件多大,内存占用都保持恒定。输入的任何部分都不会被传输——计算摘要时打开浏览器网络面板即可自行验证。
常见应用场景
- 用厂商公布的校验和验证刚下载的 ISO 或发行包是否完整。
- 为对象存储上传生成 S3 风格的 ETag 或 Content-MD5 请求头。
- 生成 HMAC-SHA256 签名,排查 Webhook 验签失败的原因。
- 为静态资源文件名生成用于破除缓存的内容指纹。
- 在不做逐字节对比的情况下判断两个大文件是否完全相同。
- 手工构造 ZIP 或 PNG 数据块时计算资源的 CRC32。
最后更新: 2026-10-14