MD5 / SHA 哈希在线计算工具
免费的在线哈希计算工具,支持 MD5、SHA-1、SHA-256、SHA-384、SHA-512 五种算法,可对文本或文件(最大 100MB)计算哈希,输出 Hex 或 Base64。SHA 系列基于浏览器原生 Web Crypto API,性能高、安全。
最后更新:
输入
—————哈希算法对比
| 算法 | 输出长度 | 设计年份 | 安全状态 | 推荐场景 |
|---|---|---|---|---|
| MD5 | 128 bit / 32 hex | 1992 | 已碰撞 | 仅非安全用途(缓存键、ETag) |
| SHA-1 | 160 bit / 40 hex | 1995 | 已碰撞 | 兼容老协议;Git(在迁移) |
| SHA-256 | 256 bit / 64 hex | 2001 | 安全 | 通用首选(TLS、JWT、Bitcoin) |
| SHA-384 | 384 bit / 96 hex | 2001 | 安全 | TLS 1.3 部分套件 |
| SHA-512 | 512 bit / 128 hex | 2001 | 安全 | 64 位 CPU 上性能优于 SHA-256 |
命令行验证
# Linux / macOS
echo -n "hello" | md5sum
echo -n "hello" | sha256sum
sha256sum your-file.zip
# Windows PowerShell
Get-FileHash -Algorithm SHA256 your-file.zip
# Node.js
node -e 'console.log(require("crypto").createHash("sha256").update("hello").digest("hex"))'
# Python
python -c 'import hashlib; print(hashlib.sha256(b"hello").hexdigest())'注意 echo 默认会在末尾加换行,加 -n 才能与本工具结果一致。
安全使用提示
- 密码存储:用 Argon2id / bcrypt / scrypt,加随机 salt; 绝不要用 MD5 / SHA-256 直接哈希密码。
- 数字签名:用 RSA-PSS / Ed25519 + SHA-256 及以上; 不要再用 MD5、SHA-1。
- 消息认证(MAC):用 HMAC-SHA256 或 KMAC, 不要把密钥简单拼接到消息前再哈希(长度扩展攻击)。
- HTTPS 文件分发:在 HTTPS 页面公布 SHA-256; HTTP 页面发布的哈希不可信,中间人可同时篡改文件和哈希。
- 哈希不能"解密":哈希是单向函数,所谓的"MD5 解密网站" 其实只是查彩虹表/字典,对随机密码无效。
常见问题
MD5 还能用吗?为什么有人说它不安全?
MD5 在 2004 年已被证明可以构造碰撞(两个不同输入算出同样的哈希),从那时起不能再用于:数字签名、HTTPS 证书、密码存储、防篡改校验。但它仍然适合:1) 文件完整性快速校验(防止下载传输出错,非防恶意);2) 缓存键、唯一标识;3) 老系统兼容。新场景一律改用 SHA-256 或更强。
MD5 / SHA-256 可以用来存储用户密码吗?
绝对不能直接用。它们速度太快,攻击者能用 GPU 每秒尝试上百亿次。密码必须用专门的「慢哈希」算法:bcrypt、scrypt、Argon2(首选 Argon2id)。这些算法可调节计算成本,强制每次哈希都需要几十毫秒,让暴力破解不可行。同时必须给每个密码独立的 salt。
SHA-1 还能用吗?
已被 Google 在 2017 年实际碰撞(SHAttered 攻击),从此不再适合安全场景。当前用途仅剩:Git commit 哈希(Git 已规划迁移到 SHA-256)、TLS 老协议兼容、HMAC-SHA1 在密钥未泄露时仍可视为 PRF 安全(但建议改 HMAC-SHA256)。新代码请用 SHA-256 或 SHA-3。
SHA-256、SHA-384、SHA-512 怎么选?
SHA-256:日常首选,性能与安全兼顾,是大多数协议(TLS、JWT、Bitcoin)的默认;SHA-384:用于需要更高安全冗余的协议(如 TLS 1.3 部分套件),输出 384 位;SHA-512:在 64 位 CPU 上比 SHA-256 还快(因为它原生用 64 位整数运算),适合长输入。如果不确定,选 SHA-256。
怎么校验下载文件的完整性?
把下载文件上传到本工具,对比官方公布的哈希(通常在下载页面下方或独立 .sha256 文件)。哈希一致说明文件未损坏未篡改。注意:1) 哈希页面本身要在 HTTPS 上获取,否则中间人可以同时改文件和哈希;2) 优先用 SHA-256,MD5/SHA-1 只能防意外损坏不能防恶意。
为什么同样的文本算出来 MD5 和别的工具不一样?
通常是因为:1) 编码不同(UTF-8 vs GBK),中文最常见;2) 行尾不同(CRLF vs LF);3) 输入末尾多了换行/空格;4) BOM 字节(U+FEFF)。本工具统一用 UTF-8 编码、不自动加换行,与 echo -n "text" | md5sum 结果一致。