它能解决什么问题
Hash(哈希)是把任意数据映射成定长"指纹"的单向函数。本工具能:
- 校验文件完整性:下载 ISO / 安装包后算一下,对比官方公布的 hash。
- 检测重复内容:把文本或文件转成 SHA-256 后用
Set去重。 - 为缓存键生成唯一 ID。
- 教学 / 实验目的,了解不同 SHA 算法的输出长度。
算法对比
| 算法 | 输出长度 | 安全性(2026) | 推荐用途 |
|---|---|---|---|
| SHA-1 | 160 bit / 40 hex | ⚠ 已破解(碰撞攻击) | 仅 git 提交校验等场景 |
| SHA-256 | 256 bit / 64 hex | ✓ 安全 | 通用首选(文件校验、内容指纹) |
| SHA-384 | 384 bit / 96 hex | ✓ 安全 | 高安全场景 |
| SHA-512 | 512 bit / 128 hex | ✓ 安全 | 密码学级哈希、签名 |
使用技巧与注意事项
- 不要把 SHA 当密码哈希:SHA 计算速度太快(每秒 GB 级),无法抵御暴力破解。生产密码请用 Argon2id / bcrypt / scrypt。
- MD5 已不再支持:浏览器出于安全考虑移除了 MD5 加速指令,本工具不提供 MD5。如确实需要,请用其他工具或 Node.js 的 crypto 模块。
- SHA-1 已不再安全:2017 年 SHAttered 证明了 SHA-1 碰撞攻击可行。本工具仅保留以校验 git 等历史场景。
- 文件哈希:SHA-256 已足够应对绝大多数场景,无需 SHA-512。SHA-512 在 64 位 CPU 上反而更快(用 64 位整数运算),但输出更大。
- 大文件:本工具会分块读取并合并哈希,浏览器主线程不会卡顿。但超过 500 MB 仍可能触发内存警告。
FAQ
为什么没有 MD5?
浏览器出于安全考虑已移除 MD5。如果确实需要 MD5(例如校验旧文件),建议使用 Node.js 的 crypto.createHash('md5') 或 Python 的 hashlib.md5()。
哈希可以反向吗?
理论上不行(单向函数)。但"彩虹表"可以用预先算好的字典反查弱口令。本工具生成的 SHA-256 是密码学安全单向的。