HMAC 生成器
基于哈希的消息认证码(HMAC)生成,支持 MD5/SHA-1/SHA-256/SHA-512 算法。
HMAC 在线生成器
HMAC(Hash-based Message Authentication Code,基于哈希的消息认证码)使用密钥对消息进行哈希运算,输出固定长度的认证码。 它可以同时验证消息完整性(未被篡改)和消息真实性(来自持密钥者)。 本工具支持 HMAC-MD5、HMAC-SHA1、HMAC-SHA256、HMAC-SHA512、HMAC-SHA3 五种算法。
典型应用场景
- API 签名:阿里云、腾讯云、AWS 等云服务 API 调用使用 HMAC-SHA256 防篡改
- Webhook 校验:GitHub、Stripe、微信支付通过 HMAC 签名验证请求来源
- JWT 签名:HS256 算法本质就是 HMAC-SHA256
- Cookie 防伪:服务端用 HMAC 给 Cookie 签名防止伪造
- TOTP 两步验证:基于 HMAC-SHA1 计算动态口令
API 签名实现要点
以 AWS Signature Version 4 为例,API 签名的典型流程是:将请求方法、URI、查询参数、头部、正文哈希按规范拼接成"规范请求";再拼接"待签字符串"(含时间戳、credential scope);最后用派生密钥(从长期密钥经多轮 HMAC 派生)对待签字符串计算 HMAC-SHA256,得到签名。服务端收到请求后用相同流程重算并比对,一致则放行。
实现时需注意几个安全要点:密钥必须保密,不可出现在 URL 或日志中;必须包含时间戳并校验时间窗口(通常 5-15 分钟),防止重放攻击;服务端比较签名必须用恒定时间比较(constant-time comparison),否则攻击者可通过响应时间差逐字节猜测签名(时序攻击);新建系统推荐 HMAC-SHA256,HMAC-MD5 和 HMAC-SHA1 虽未发现实际攻击但已不推荐用于新项目。
Webhook 校验是另一常见场景。GitHub 会在每个 Webhook 请求的 X-Hub-Signature-256 头部附带 sha256= + HMAC-SHA256(用你在 GitHub 配置的 secret 作为密钥,请求 body 作为消息)。你的服务端用相同 secret 重算 HMAC 并与头部比对,即可验证请求确实来自 GitHub 而非伪造。