✓ 🍋
Menu
🍋 Peasy Tools
Security

HMAC

HMAC (Código de Autenticação de Mensagem Baseado em Hash)

Um código de autenticação de mensagem que combina uma função hash criptográfica com uma chave secreta, verificando tanto a integridade dos dados quanto a autenticidade do remetente em uma única operação.

Detalhe técnico

HMAC é definido no RFC 2104 como HMAC(K, m) = H((K' ⊕ opad) || H((K' ⊕ ipad) || m)), onde H é uma função hash (SHA-256, SHA-384), K' é a chave com padding, opad é 0x5c repetido e ipad é 0x36 repetido. A construção de hash duplo previne ataques de extensão de comprimento que afetam H(K || m) simples. HMAC-SHA256 é usado em JWTs (JSON Web Tokens), webhooks de API (Stripe, GitHub), assinaturas AWS v4 e TLS PRF. A resistência à falsificação depende do segredo da chave — comprometimento da chave invalida toda verificação. A comparação de tempo constante (timing-safe) do HMAC é essencial para prevenir ataques de temporização.

Exemplo

```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('');
```

Ferramentas relacionadas

Termos relacionados