功能开发中

HMAC生成器

使用不同算法生成HMAC签名。

占位结果
使用教程
  1. 在 "消息(Message)" 文本输入区域(textarea) 输入需要进行 HMAC 签名的原始内容(payload/raw message)
  2. 在 "密钥(Key)" 输入框填写双方约定共享的秘密密钥字符串(shared secret)
  3. 从下拉菜单(select dropdown) 选择目标哈希算法(hash algorithm):
  4. 选择输出格式(output encoding):十六进制(Hex string) 或 Base64
  5. HMAC 签名结果(result) 即时显示在输出区域(output panel)
  6. 接收方(receiver) 使用相同的 message + secret_key + algorithm 重新生成 HMAC 并比对一致性
  7. 复制 HMAC 值用于 HTTP Header (X-Hmac-Signature: <hmac_value>) 或请求参数中
使用场景
  • Webhook 签名验证 (Webhook Signature Verification):GitHub/GitLab/Gitee Bitbucket 等平台的 Push Event / PR Webhook Payload URL Secret 验证(request legitimacy check) —— 确保 POST 到你 callback URL 的请求确实来自 GitHub 而非恶意伪造(forged/malicious/spoofed request)。
  • API 数据完整性校验 (API Data Integrity Check):RESTful API / GraphQL 的请求体(body/payload) 加签(signing) 防止中间人攻击(man-in-the-middle attack/MITM) 篡改参数(tampering with parameters like amount/status/role)。
  • JWT Token 签署 (JWT Token Signing):JSON Web Token 的 Signature 部分(第 3 段/segment) 生成 —— HS256 (HMAC-SHA256) 算法即为 HMAC-SHA256 标准实现。Header.Payload.Signature 三段式结构。
  • Cookie 防篡改 (Cookie Tamper-Evident Protection):对 Cookie 值(value) 附带 HMAC 签名(signature) 防止客户端(client-side JavaScript) 伪造(forge) session 数据或权限提升(privilege escalation)。
  • 支付回调验证 (Payment Callback Verification):支付宝 Alipay / 微信 WeChat Pay 的异步通知(asynchronous notification/callback) 签名校验核验 —— 确认金额(amount)、商户号(merchant_id)、订单号(out_trade_no) 未被篡改。
  • 分布式系统 RPC鉴权 (Distributed System RPC Authentication):微服务架构(microservices architecture) 中内部服务间(inter-service) 调用时添加 Authorization: hmac-sha256 <signature> 鉴权头(header) 防止未授权访问(unauthorized access / service-to-service zero-trust)。
  • 软件许可证验证 (Software License Validation):离线环境(offline air-gapped environment) 下对许可证文件(license file/license.dat) 做 HMAC 完整性校验(integrity verification) 防止破解(crack/tamper/bypass license protection)。
常见问题
Q: HMAC 和普通 Hash(Plain Hash) 有什么本质区别?
A: 普通 Hash (如 SHA256(message)) 无密钥(keyless) —— 任何人(anyone) 都能对相同消息计算出相同的 hash value,无法证明身份(identity);HMAC 引入密钥(secret key) 使得只有持有正确密钥的一方才能生成合法签名(legitimate signature),兼具 完整性(integrity) + 真实性(authentication) 双重保障(double guarantee)。
Q: 密钥应该如何选择和生成?
A: 推荐使用 至少 32 字节(256-bit) 高强度随机密钥(high-entropy random key)。可通过以下方式生成:(1) 操作系统级 CSPRNG: /dev/urandom (Linux/macOS) or CryptGenRandom() (Windows);(2) 编程语言库:Python secrets.token_bytes(32) / Node.js crypto.randomBytes(32) / Java SecureRandom;(3) 在线工具:openssl rand -base64 32。⚠️ 绝对不要使用简单字符串(password / password123 / admin) 作为 HMAC key!
Q: SHA-1 还可以用于 HMAC 吗?安全性如何?
A: SHA-1 已被证明存在碰撞(collision attack - Google SHAttered 2017 年公布两个不同消息产生相同 SHA-1 hash),理论上不再推荐用于新项目(new development)。但在 HMAC 场景下(HMAC construction) 安全性证明(security proof) 不完全依赖抗碰撞性(collision resistance),HMAC-SHA1 仍被认为 相对安全(reasonably secure for most use cases)。新项目仍首选 HMAC-SHA-256。
Q: HMAC 可以加密(encrypt) 数据吗?
A: ❌ 不行!NO! HMAC 只做签名验证(signing & verification) 不具备加密能力(encryption capability)!消息内容(message payload) 仍是明文(plaintext/cleartext) 可被任何人读取。若需保密(confidentiality) 请配合对称加密算法(symmetric cipher: AES-256-GCM) 或公钥加密(public-key encryption: RSA-OAEP) 使用!
工具名称 HMAC生成器
所属分类 加密
更新时间 2026-06-23
使用次数 38
工具简介 使用不同算法生成HMAC签名。
功能特性
多哈希算法支持:SHA-256 (推荐, 安全性高) / SHA-1 (兼容性好但碰撞风险存在) / MD5 (不推荐用于安全场景仅 legacy 兼容)。
密钥输入 (Secret Key Input):支持自定义 HMAC 密钥(secret key/shared key/password) 输入,双方必须共享同一密钥才能验证通过。
十六进制 Hex 编码输出:HMAC 结果以 Hex-encoded string (hex string format) 形式呈现便于传输比较(transmission & comparison) 和 URL 安全嵌入。
实时 reactive 生成:输入变化时 HMAC 值自动重新计算(auto-recalculate on input change),无需手动触发按钮。
Base64 变体输出:可选输出 Base64 编码格式(format variant) 适配不同系统集成需求(JSON header / HTTP cookie / XML attribute 等)。
长度截断选项:可截断 HMAC 结果为指定位数(truncate to N bytes/hex chars) 满足特定系统的长度约束(length constraint)。
暂无收藏工具
收藏工具