HMAC (Hash-based Message Authentication Code) é uma tecnologia de autenticação de mensagem amplamente utilizada definida na RFC 2104. O HMAC processa uma chave junto com uma mensagem através de uma função hash para produzir uma assinatura de comprimento fixo. Ao contrário de hashes normais, o HMAC requer conhecer a chave para gerar ou verificar uma assinatura, garantindo tanto a integridade da mensagem quanto a autenticidade.
**HMAC é a base da segurança moderna de API**. Stripe, GitHub, Shopify, Slack e Twilio usam HMAC-SHA256 para assinar eventos de webhook, garantindo que as solicitações realmente venham da plataforma. AWS usa HMAC-SHA256 para assinatura de solicitações Signature V4. O algoritmo HS256 do JWT é essencialmente HMAC-SHA256. Entender HMAC é o primeiro passo para dominar a segurança de API.
**Diferentes plataformas têm diferentes formatos de assinatura**: o formato da Stripe é `t=timestamp,v1=hex_signature`, assinando `timestamp.payload`; GitHub usa `X-Hub-Signature-256` com formato `sha256=hex_signature`; Shopify usa `X-Shopify-Hmac-Sha256` com valor codificado em Base64. Esta ferramenta suporta análise automática e verificação desses formatos comuns.
**Por que a verificação de assinatura falha?** O motivo mais comum é incompatibilidade de formato de mensagem: a plataforma pode estar assinando `timestamp.payload` em vez do corpo da mensagem bruta; ou a mensagem contém quebras de linha extras; ou a assinatura inclui um prefixo (como `sha256=`) que precisa ser removido. Verifique cuidadosamente a documentação da plataforma e compare usando o valor hexadecimal bruto.
Esta ferramenta usa a **Web Crypto API** nativa do navegador (SubtleCrypto) para cálculos HMAC — a mesma biblioteca criptográfica que alimenta HTTPS e TLS. Todos os cálculos acontecem localmente; chaves e mensagens nunca são enviadas para nenhum servidor. Abra o painel Network das Ferramentas de Desenvolvedor do navegador para verificar que nenhuma solicitação externa é feita.