安全

HMAC 生成器

一个用于 API 认证、Webhook 签名校验、支付回调排查和请求完整性检查的 HMAC 签名工具。支持文本和文件输入,可切换密钥格式,选择多种 HMAC 算法,并输出 Hex 或 Base64 签名。

  • 支持 HMAC-MD5、HMAC-SHA1、HMAC-SHA2、HMAC-SHA3、HMAC-Keccak、HMAC-BLAKE2、HMAC-BLAKE3 和 HMAC-SM3
  • 既可以签名普通消息文本,也可以对文件 payload 计算 HMAC
  • 支持文本密钥、Hex 密钥和 Base64 密钥,方便按实际字节内容排查问题
  • 支持 lower hex、UPPER HEX 和 Base64 输出,便于匹配不同平台的签名格式要求
工具/HMAC 生成器
24 B
文本
HMAC-SHA256 · lower hex
HMAC-SHA256 · lower hex
命令

功能简介

从生成签名到排查签名不一致,都可以在同一个页面完成。

  1. 01

    多算法 HMAC

    在同一界面中切换 SHA-256、SHA-512、SHA3、Keccak、BLAKE、SM3 以及兼容旧系统的算法。

  2. 02

    支持消息和文件签名

    可对普通文本、JSON payload、Webhook 原始 body、canonical string 和本地文件计算 HMAC。

  3. 03

    文件分块计算 HMAC

    大文件会在浏览器内分块处理,耗时任务也能看到计算进度。

  4. 04

    密钥格式切换

    支持文本密钥、Hex 密钥和 Base64 密钥,方便确认真正参与计算的是同一组字节,而不只是看起来相同的字符串。

  5. 05

    灵活的输出编码

    签名结果可输出为 lower hex、UPPER HEX 或 Base64,适配 API、Webhook 和对象存储等不同签名规范。

  6. 06

    本地分块处理

    文本、secret 和文件都在浏览器内计算。即使是大文件,也不需要把原始 payload 交给外部服务器。

如何使用

建议按这个顺序核对:签名内容、密钥字节、算法、输出格式,然后再和服务端结果比较。

  1. 01

    选择输入类型。canonical string 或 request body 用文本模式,二进制 payload 用文件模式。

  2. 02

    输入 Secret key,并在计算前确认密钥格式是文本、Hex 还是 Base64。

  3. 03

    选择后端或第三方平台要求的 HMAC 算法,名称和变体都要一致。

  4. 04

    选择输出格式(Hex 或 Base64),复制生成的签名,并和服务端期望值进行比较。

  5. 05

    如果验证失败,先检查 payload 是否被规范化、字段顺序是否一致、编码和换行符是否一致,以及 timestamp 是不是按同样规则拼接。

功能说明

它不是只输出一次 digest,而是面向真实签名校验流程设计的。

  • 在线生成 HMAC-SHA256、HMAC-SHA512、HMAC-SHA3、HMAC-BLAKE3 和 HMAC-SM3
  • 适合 API 签名字符串、Webhook payload、支付回调校验和签名 URL 排查
  • 按字节一致性处理文本、Hex、Base64 三种密钥格式
  • 可输出 lower hex、UPPER HEX 和 Base64,以匹配不同平台的签名规范
  • 文件 HMAC 支持分块处理、进度显示和取消操作
  • 内置示例 payload,一键填入即可开始联调和排查
  • 支持全屏工作区和进度反馈,适合较长 payload、签名字符串和文件校验
  • 所有计算都在浏览器内完成,适合密钥隐私和内部调试场景

适合哪些场景

适合 API 安全、平台对接,以及各种签名不一致的排查。

  1. API 认证调试

    重新计算请求签名,排查字段顺序、编码方式和 canonicalization 不一致的问题。

  2. Webhook 签名验证

    对收到的 raw callback payload 重新签名,确认来源可信,并验证 payload 没有被篡改。

  3. 支付网关对接

    根据不同支付服务商的签名规则,校验请求签名和回调签名。

  4. 签名 URL 和存储访问

    生成或验证对象存储、CDN 访问控制中使用的 canonical string 签名。

延伸阅读

如果只是确认文本或文件有没有变化,不涉及共享 secret,请使用 哈希生成器 。如果问题涉及 token header、payload、过期时间或签名结构,可以继续查看 JWT 检查器 。如果签名对象里包含 query string、callback URL 或百分号编码规则,重新计算 HMAC 前建议先用 URL 编码解码 确认字节边界。

使用建议

HMAC 校验能否通过,关键在于两边参与计算的字节是否完全一致。

  • 确保算法、原始消息字节和 secret key 字节与服务端实现完全一致
  • 明确签名对象到底是 raw body、排序后的 query string,还是 canonical string
  • 签名前统一 UTF-8 编码和换行符规则
  • 避免隐式转换,例如重新格式化 JSON、trim 字符串或自动 URL decode
  • 不要把生产签名密钥暴露在前端代码、日志或截图中
  • 建议在 CI 中固定签名测试向量,方便发现依赖或框架升级后的行为漂移

边界与注意事项

理解 HMAC 的边界,可以避免对它产生错误的安全预期。

  • HMAC 用于带密钥的完整性校验和来源确认,不是可以解密还原内容的加密算法
  • 这个工具不负责密钥生命周期、轮换策略或安全托管
  • 如果服务端签名前有额外的规范化步骤,你需要先构造出完全相同的输入再计算
  • Base64 有标准形式和 URL-safe 形式之分,请以目标协议的要求为准
  • 大文件签名耗时取决于本机性能和浏览器可用资源

常见问题

这里整理了用法、数据处理、结果核对和实际限制方面的常见问题。

为什么我的 HMAC 和服务端结果不一致?

多数情况是 canonical string、编码方式、字段顺序、密钥解释方式或输出格式与服务端不同。

文本密钥和 Hex 密钥有什么区别?

文本密钥会按字符编码成字节;Hex 密钥表示明确的字节序列。同样看起来的字符串,实际参与 HMAC 的字节可能完全不同。

什么时候应该输出 Base64,而不是 Hex?

以目标协议要求为准。很多 Webhook 系统要求 Base64,部分 API gateway 则常用 Hex。

计算文件 HMAC 时,文件会上传吗?

不会。文件会在浏览器内分块处理,并在本地完成计算。

HMAC-SHA256 和 SHA256 是一回事吗?

不是。SHA256 是不带密钥的哈希;HMAC-SHA256 会把 secret key 和消息一起参与计算,用于验证消息真实性。

更多相关工具

不带密钥的 digest 请使用哈希生成器;token 解码和验签可以使用 JWT 检查器;需要加强凭据时可以使用密码生成器。