# HMAC 生成与验证器

使用 SHA-1/SHA-2/SHA-3/BLAKE2 对消息+共享密钥计算 HMAC 消息认证签名，或对收到的签名做验证（恒定时间比对），并内置 Stripe / Slack / GitHub 的 webhook 预设

> 标准页面: https://elysiatools.com/zh/tools/hmac-generator-verifier

- **分类:** Security

- **关键词:** hmac, 签名, webhook, sha256, 消息认证码

## 概述

HMAC（基于哈希的消息认证码）证明消息来自持有共享密钥的一方且未被篡改——它是 Stripe、Slack、GitHub、Shopify 等绝大多数 webhook 的标准签名机制。

本工具支持两种模式：

- **生成**：粘贴原始请求体与 webhook 密钥，选择算法（SHA-1 / SHA-256 / SHA-384 / SHA-512 / SHA3-256 / SHA3-512 / BLAKE2s-256 / BLAKE2b-512）与输出编码（hex / base64 / base64url），得到签名。
- **验证**：额外粘贴你在 webhook 头里收到的签名，工具会重新计算 HMAC 并用 `crypto.timingSafeEqual` 做恒定时间比对，告诉你是否匹配，以及期望值与计算值的差异。

Webhook 预设会自动选用正确的算法、编码与（Slack/GitHub 的）签名前缀，并说明各家签名约定。

全部在本地用 Node `crypto` 计算，密钥不会离开本次请求。

## 输入项

- **消息（原始主体）** (textarea): Paste the raw request body exactly as received (do not re-serialize JSON — byte differences break the signature).
- **共享密钥** (text): whsec_... (your webhook signing secret)
- **模式** (select)
- **算法** (select)
- **签名编码** (select)
- **待验证签名** (text): Paste the signature from the webhook header (verify mode)
- **Webhook 预设** (select)

## 适用场景

- 调试或对接 Stripe、Slack、GitHub 等第三方平台的 Webhook 签名验证逻辑时。
- 需要为自定义 API 设计基于共享密钥的安全认证机制并生成测试签名时。
- 验证接收到的 Webhook 请求体是否被篡改，并需要防范时序攻击时。

## 工作原理

- 选择操作模式（仅生成签名或对签名进行验证）并输入原始请求体与共享密钥。
- 根据需求选择哈希算法（如 SHA-256、SHA3-512）与输出编码格式（Hex、Base64 或 Base64url），或直接应用 Webhook 预设。
- 工具在本地使用 Node.js crypto 模块计算 HMAC 签名；若在验证模式下，将使用恒定时间比对算法校验输入的签名是否匹配。

## 使用案例

- Webhook 接收端本地调试：在本地开发环境中模拟 Stripe 或 GitHub 发送的 Webhook 请求，生成合法的签名头以测试本地路由。
- API 接口安全校验：为自建的微服务设计轻量级的 HMAC 签名校验机制，快速生成测试密钥与签名样例。
- 第三方签名合法性验证：将生产环境中报错的 Webhook 请求体与签名复制到工具中，一键排查是否因密钥配置错误或数据篡改导致验证失败。

## 常见问题

### 为什么我生成的 HMAC 签名与第三方平台发送的不一致？

请确保输入的原始消息与接收到的原始请求体完全一致，不要重新格式化 JSON，因为任何字节差异都会导致签名失效。

### 什么是恒定时间比对，它有什么作用？

恒定时间比对在比较两个字符串时耗时固定，能有效防止攻击者通过测量比对耗时来破解签名的时序攻击。

### 这个工具会把我的共享密钥上传到服务器吗？

不会。所有 HMAC 计算和签名验证均在本地浏览器中完成，您的共享密钥和消息绝不会发送到任何外部服务器。

### Webhook 预设有什么作用？

预设会自动配置对应平台（如 Stripe 或 Slack）所要求的哈希算法、输出编码以及特定的签名前缀，简化调试流程。

### 支持哪些哈希算法和编码格式？

支持 SHA-1、SHA-2 (SHA-256/384/512)、SHA-3 (SHA3-256/512) 和 BLAKE2 (2s-256/2b-512) 算法，输出编码支持 Hex、Base64 和 Base64url。

## 相关工具

- [PKCE Code Verifier 与 Challenge 生成器](https://elysiatools.com/zh/tools/pkce-code-verifier-generator): 生成、校验与验证 OAuth2 / OIDC PKCE（RFC 7636）的 code_verifier 与 S256 code_challenge 配对。三种模式：(1) 从密码学安全随机字节（256/384/512/768 位熵）生成全新的 verifier + challenge；(2) 按 RFC 审计你已有的 verifier——长度（43–128）、字符集 \[A-Za-z0-9-._~\] 与 ≥256 位熵；(3) 通过重算 BASE64URL(SHA256(verifier)) 验证 verifier/challenge 配对。可选构建完整的授权请求 URL 与令牌交换体。补足通用的 nonce-generator（仅输出 verifier+challenge 配对）——增加 RFC 合规审计与配对验证。
- [SSH 密钥对生成器](https://elysiatools.com/zh/tools/ssh-key-generator): 生成 SSH 密钥对（推荐 Ed25519，或 RSA 4096、ECDSA P-256），公钥为可直接用于 ~/.ssh/authorized_keys 的 OpenSSH 格式，附 SHA256 指纹与 PEM 私钥。可选口令加密。本地运行。
- [TOTP / HOTP 离线动态密码生成器](https://elysiatools.com/zh/tools/totp-hotp-offline-generator): 从 base32 共享密钥生成 RFC 6238 TOTP（基于时间，6/8 位、30/60 秒步长）与 RFC 4226 HOTP（基于计数器）一次性密码，完全离线，支持 HMAC-SHA1/256/512，并导出 otpauth:// URI 以便导入 Google Authenticator / Authy
- [BIP39 助记词生成器](https://elysiatools.com/zh/tools/mnemonic-bip39-generator): 生成或验证 12 到 24 词的 BIP39 助记词，并显示 entropy 与 PBKDF2-HMAC-SHA512 seed 输出
- [文本哈希生成器](https://elysiatools.com/zh/tools/text-hash-generator): 一次性计算任意文本的 MD5、SHA-1、SHA-256、SHA-512、CRC-32 哈希。同时给出十六进制和 Base64 两种摘要(基于 UTF-8 编码)。
- [Argon2 密码哈希生成器](https://elysiatools.com/zh/tools/argon2-password-hash-generator): 生成 Argon2id 密码哈希，支持内存、迭代、并行度和盐长度调优，并输出 PHC 编码字符串
- [批量条码生成器](https://elysiatools.com/zh/tools/barcode-batch-generator): 从 CSV 或多行文本批量生成 Code 128、EAN-13、UPC-A、ITF-14、QR Code 和 Data Matrix，并导出 PNG ZIP 或 PDF
- [熵计算器](https://elysiatools.com/zh/tools/entropy-calculator): 衡量任意数据的随机性——香农熵（位/符号）、最小熵（最坏情况猜测难度）、字符集大小、重复率，以及在选定算力下的平均暴力破解时间。评级为强（最小熵 ≥128 位）、中（64-127）、弱（<64）。

## 示例

- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [Web Rust 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-rust): Web Rust 图像处理示例，包括图像读取保存、缩放和格式转换

## 相关内容

- [API 请求复现、重放与运行时调试工具](https://elysiatools.com/zh/hubs/api-request-replay-and-debugging): 把 cURL 转代码、Webhook 捕获重放、HMAC 校验、响应差异对比、请求头审查、TLS 证书排查和请求链路调试放到一个聚焦的 API 专题里。
- [令牌、会话与 2FA 工作流工具](https://elysiatools.com/zh/hubs/token-session-and-2fa-workflows): 把 PKCE 与 nonce 生成、JWT/JWK 检查、HMAC 验签、OTP 与 TOTP 测试，以及适合认证排障的标识符工具聚合到一个真实登录流程专题里。
- [JSON Schema、Mock 数据与 API 夹具生成工具](https://elysiatools.com/zh/hubs/json-generate): 围绕JSON Schema 生成、Mock 负载构建与 API 夹具准备整理的一组工具。
- [CSS 效果、配色板与设计 Token 生成工具](https://elysiatools.com/zh/hubs/design-generate): 围绕CSS 视觉效果、配色构建与设计 Token 生成整理的一组工具。
