🍋
Menu
Security

HMAC

HMAC(基于哈希的消息认证码)

一种使用密码学哈希函数与密钥相结合来创建消息认证码的特定构造,用于同时验证数据的完整性和消息的真实性。

技术细节

HMACRFC 2104)的计算公式为:HMAC(K, m) = H((K' XOR opad) || H((K' XOR ipad) || m)),其中 H 是哈希函数(SHA-256),K' 是填充到块大小的密钥,ipad 是重复的 0x36,opad 是重复的 0x5c。这种双重哈希构造可防止影响普通 hash(key || message) 的长度扩展攻击。HMAC-SHA256 用于 JWT 签名、API 认证(AWS Signature V4)、Webhook 验证(Stripe、GitHub)和密钥派生(HKDF)。Web Crypto API 通过 subtle.sign() 和 subtle.verify() 支持 HMAC。验证 HMAC 时,时间安全比较对于防止时序侧信道攻击至关重要。

示例

```javascript
// HMAC — Web Crypto API example
const data = new TextEncoder().encode('sensitive data');
const hash = await crypto.subtle.digest('SHA-256', data);
const hex = Array.from(new Uint8Array(hash))
  .map(b => b.toString(16).padStart(2, '0')).join('');
```

相关工具

相关术语