语言
English English Vietnamese (Tiếng Việt) Vietnamese (Tiếng Việt) Chinese (简体中文) Chinese (简体中文) Portuguese (Brazil) (Português do Brasil) Portuguese (Brazil) (Português do Brasil) Spanish (Español) Spanish (Español) Indonesian (Bahasa Indonesia) Indonesian (Bahasa Indonesia)
HMAC 生成器

HMAC 生成器

使用 8 种算法(SHA-256、SHA-512、MD5 等)生成 HMAC 身份验证代码。立即验证 Webhook 签名和 API 令牌。

什么是 HMAC?

HMAC(基于哈希的消息身份验证码)是一种密码学机制,它将密钥与哈希函数相结合以生成身份验证码。它同时提供数据完整性和身份验证 — 确保消息未被篡改,并且是由知道密钥的人发送的。

核心目的:HMAC 验证消息的真实性和完整性,使其对系统之间的安全通信至关重要。

常见用例

Webhook 验证

Stripe、GitHub 和 Shopify 等服务使用 HMAC-SHA256 对 Webhook 负载进行签名,以便您可以验证它们的真实性,并且在传输过程中未被篡改。

API 身份验证

AWS Signature V4 和许多 REST API 使用 HMAC 对请求进行签名,确保 API 调用来自具有有效凭证的授权客户端。

JWT 签名

HMAC-SHA256(HS256)是 JSON Web Token 的常见算法,为无状态身份验证提供对称签名方法。

消息完整性

验证数据在传输过程中未被修改,确保接收到的消息与发送的消息完全相同。

HMAC 如何工作

HMAC 接受两个输入 — 密钥消息 — 并通过哈希函数(如 SHA-256)以特定方式运行它们,使得在不知道密钥的情况下伪造在计算上是不可行的。

HMAC 公式
HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m))

其中:

  • H 是哈希函数(例如 SHA-256)
  • K 是密钥
  • m 是要验证的消息
  • opadipad 是确保安全性的填充常数
安全优势:嵌套哈希结构与密钥填充使 HMAC 能够抵抗长度扩展攻击,并确保即使哈希函数存在弱点,HMAC 构造仍然保持安全。

如何使用此 HMAC 生成器

1

选择算法

从下拉菜单中选择您的 HMAC 算法。SHA-256 是默认选择,推荐用于大多数用例。MD5 和 SHA-1 可用于向后兼容,但标记为不安全。

2

输入您的密钥

在密钥输入字段中输入或粘贴您的密钥。如果您的密钥为二进制格式,使用输入类型选择器在 字符串十六进制Base64 编码之间切换。

3

输入您的消息

输入您要验证的消息。与密钥一样,如果您的消息是十六进制编码或 Base64 编码,您可以切换输入类型。

4

获取您的 HMAC

HMAC 在您输入时自动生成。十六进制Base64 输出同时显示。点击任一输出旁的复制按钮将其复制到您的剪贴板。

验证 HMAC

要将您生成的 HMAC 与预期值进行比较,启用 验证 HMAC 复选框。粘贴预期的 HMAC — 该工具接受十六进制和 Base64 格式,并立即显示匹配或不匹配徽章。

专业提示:验证 Webhook 签名时,请确保使用确切的原始请求体,不进行任何修改。即使单个字符的差异也会导致验证失败。

功能

8 种 HMAC 算法

使用多种哈希算法生成 HMAC 代码,以满足任何集成需求:

SHA-256 推荐

Webhook、API 和 JWT(HS256)的标准选择。提供出色的安全性,具有 256 位输出。

SHA-512

更高的安全性,具有 512 位输出。适合需要最大密码学强度的应用程序。

SHA-384 & SHA-224

替代 SHA-2 变体,提供 384 位和 224 位输出,用于特定的安全需求。

SHA3-256 & SHA3-512

基于 Keccak 算法的最新一代 SHA-3 算法,提供现代密码学标准。

传统算法:SHA-1 和 MD5 可用于向后兼容,但标记为不安全。在新实现中使用 SHA-256 或更高版本。

灵活的输入格式

密钥和消息都接受三种输入类型,这在处理来自 API 的二进制密钥或调试编码不匹配时至关重要:

字符串(UTF-8)

人类可读的密钥和消息的标准文本输入。API 密钥最常见的格式。

十六进制

十六进制字节表示。当您的密钥以来自 API 仪表板的原始十六进制字节形式提供时使用。

Base64

Base64 编码的二进制数据。在 HTTP 标头和配置文件中常见。

双输出显示

同时查看 HMAC 的十六进制和 Base64 表示 — 无需切换。大写切换让您在小写和大写之间切换十六进制输出。

十六进制输出

十六进制格式

  • 更长的表示
  • 更容易阅读和调试
  • 每字节两个字符
  • 大写/小写切换
Base64 输出

Base64 格式

  • 紧凑 33%
  • HTTP 标头中常见
  • 在 JWT 令牌中使用
  • URL 安全变体可用

HMAC 验证

内置验证模式让您粘贴预期的 HMAC 值,并立即查看它是否与您生成的输出匹配。它支持十六进制和 Base64 格式,并规范化十六进制比较的空格和大小写。

即时验证

实时比较,显示匹配/不匹配徽章。

格式灵活性

自动接受十六进制和 Base64 输入格式。

智能规范化

处理十六进制值中的空格和大小写差异。

您的数据保持私密

所有 HMAC 计算完全在您的浏览器中进行,使用 CryptoJS 库:

  • 无上传 — 您的密钥和消息永远不会离开您的设备
  • 无服务器处理 — 一切都在浏览器中以 JavaScript 运行
  • 无跟踪 — 我们不记录或存储任何输入数据
  • 离线可用 — 加载后无需互联网连接即可工作
100% 客户端:您的敏感密码学密钥和数据完全保持私密。所有计算都在您的浏览器中本地进行,零服务器通信。

常见问题

我应该使用哪种 HMAC 算法?

SHA-256 是最广泛使用的,推荐用于大多数应用程序。它被 Stripe、GitHub、Shopify Webhook 和 AWS API 签名使用。如果您需要更高的安全性,请使用 SHA-512,或使用 SHA3 变体获得最新标准。

行业标准:SHA-256 在安全性、性能和跨平台和服务的兼容性之间提供了最佳平衡。

为什么 MD5 和 SHA-1 标记为不安全?

MD5 和 SHA-1 存在已知的密码学弱点 — 两者都已演示碰撞攻击。虽然 HMAC-MD5 和 HMAC-SHA1 在某些情况下仍被认为是安全的(HMAC 构造增加了安全性),但最佳实践是在新实现中使用 SHA-256 或更高版本。

建议迁移:如果您当前使用 MD5 或 SHA-1,计划迁移到 SHA-256 或 SHA-512 以获得长期安全性。

十六进制和 Base64 输出有什么区别?

十六进制 将每个字节表示为两个十六进制字符(0-9、a-f)。它更长但更容易阅读和调试。Base64 更紧凑(大约短 33%),在 HTTP 标头和 JWT 中常见。选择您的 API 或服务期望的任何格式。

格式 长度 常见用途 可读性
十六进制 64 个字符(SHA-256) 调试、日志
Base64 44 个字符(SHA-256) HTTP 标头、JWT 中等

何时应该为密钥使用十六进制或 Base64 输入类型?

如果您的密钥以十六进制字符串(例如来自 API 仪表板显示原始字节)或 Base64 字符串的形式提供,请选择匹配的输入类型,以便该工具正确解释二进制数据。大多数情况下,"字符串"(UTF-8)是正确的选择。

  • 字符串(UTF-8) — 用于常规文本密码和 API 密钥,如"my_secret_key_123"
  • 十六进制 — 当您的密钥看起来像"a3f5b2c8d1e4..."(十六进制字节)时使用
  • Base64 — 当您的密钥看起来像"SGVsbG8gV29ybGQ="(Base64 编码)时使用

我如何验证 Webhook 签名?

输入 Webhook 的签名密钥作为密钥,将原始请求体粘贴为消息,选择您的服务使用的算法(通常是 SHA-256),然后启用验证 HMAC 并粘贴来自 Webhook 标头的签名以检查它是否匹配。

1

获取密钥

从服务仪表板复制签名密钥

2

原始体

粘贴确切的请求体

3

验证

与标头签名进行比较

关键:使用原始、未修改的请求体。不要解析或重新格式化 JSON — 即使空格更改也会导致验证失败。

我的数据安全吗?

是的。所有 HMAC 计算完全在您的浏览器中运行 — 没有数据发送到任何服务器。您的密钥和消息始终保留在您的设备上。

客户端处理 100%
数据隐私 100%
服务器上传 0%
不安全
密钥
消息
HMAC 输出

请输入密钥和消息以生成HMAC

Hex
Base64
准备就绪
|
从下拉菜单中选择一个算法 — SHA-256 推荐用于大多数用例
当您的密钥或消息为二进制格式时,使用 输入类型选择器(字符串/十六进制/Base64)
启用 验证 HMAC 将您的输出与预期值进行比较 — 支持十六进制和 Base64
MD5 和 SHA-1 标记为 不安全 — 在生产环境中使用 SHA-256 或更高版本
点击 示例数据 加载 Webhook 签名示例
所有计算都在您的浏览器中进行 — 您的密钥和消息永远不会发送到任何服务器
想了解更多? 阅读文档 →
1/7
找不到?用AI自定义工具
开始输入以搜索...
搜索中...
未找到结果
请尝试使用不同的关键词搜索