HMAC(Hash-based Message Authentication Code,基于哈希的訊息認證码)是一种广泛使用的訊息認證技术,由 RFC 2104 定义。HMAC 将金鑰与訊息一起通过哈希函数处理,生成一个固定长度的簽章。相比普通哈希,HMAC 需要知道金鑰才能生成或驗證簽章,因此同时保证了訊息的完整性和来源真实性。
**HMAC 是现代 API 安全的基石**。Stripe、GitHub、Shopify、Slack、Twilio 等平台使用 HMAC-SHA256 簽章 Webhook 事件,确保請求确实来自平台而非伪造。AWS 使用 HMAC-SHA256 实现 Signature V4 請求簽章。JWT 的 HS256 演算法本质就是 HMAC-SHA256。理解 HMAC 是掌握 API 安全的第一步。
**不同平台的簽章格式各有不同**:Stripe 簽章格式为 `t=timestamp,v1=hex_signature`,需要簽章的内容是 `timestamp.payload`;GitHub 使用 `X-Hub-Signature-256` 头,格式为 `sha256=hex_signature`;Shopify 使用 `X-Shopify-Hmac-Sha256`,值为 Base64 编码。本工具支持这些常见格式的自动解析和驗證。
**为什么簽章驗證会失败?** 最常见的原因是訊息格式不匹配:平台可能簽章的不是原始訊息体,而是 `timestamp.payload` 这样的组合字串;或者訊息包含额外换行;或者簽章包含前缀(如 `sha256=`)但你没有去掉。仔细对照平台文档,使用十六進位原始值进行比对。
工具使用瀏覽器原生 **Web Crypto API**(SubtleCrypto)实现 HMAC 计算,与 HTTPS 和 TLS 使用的加密库是同一套代码。所有计算在本地完成,金鑰和訊息不发送到任何伺服器。打开瀏覽器开发者工具的网络面板,可以驗證全程无任何外网請求。