onlinetools.dev

哈希生成器

MD5、SHA-1、SHA-256、SHA-512 与 HMAC — 全部在浏览器中计算

本地运行
loading…
关于此工具

直接在浏览器中计算任意文本的 MD5、SHA-1、SHA-256、SHA-384 和 SHA-512 摘要,以及带密钥的 HMAC 签名。SHA 家族和 HMAC 使用 Web Crypto API——与浏览器做 TLS 时相同的经过审计的原语;MD5(Web Crypto 有意不提供)则内置了一个小的本地实现,用于旧式校验和工作。

哈希随输入实时更新,且所有算法同时计算,所以对照下载页选择的任意算法校验一个值都无需配置。HMAC 模式增加了密钥字段,用于验证 webhook 签名——GitHub、Stripe 和大多数 webhook 服务商都用 HMAC-SHA256 对载荷签名。

输入从不离开页面,所以可以放心哈希那些不能贴进在线服务的东西:API 载荷、要对照泄露库检查的密码、内部文档。

常见问题

我该用哪种哈希算法?
今天任何涉及安全的场景:SHA-256 或更强。MD5 和 SHA-1 的抗碰撞性已被攻破——可以构造两个摘要相同的不同输入——所以它们只在非对抗性校验和及旧协议兼容中残存。
那为什么还提供 MD5?
因为你仍会遇到它:ETag、缓存键、文件清单、老的数据库列。校验这些值就得计算 MD5,与它的密码学地位无关。只是别再用它设计任何新东西。
HMAC 是什么,和普通哈希有何不同?
HMAC 把一个密钥混入哈希过程,只有持钥者能生成或验证摘要。普通哈希证明完整性(「数据未被改动」);HMAC 还证明真实性(「持有密钥的人生成了它」)。日常用途就是 webhook 签名验证。
哈希和加密密码是一回事吗?
不是,而且 SHA-256 这类快速哈希是存储密码的错误工具——攻击者每秒能尝试数十亿次。密码存储需要刻意慢且加盐的算法:bcrypt、scrypt 或 Argon2。
相关工具