Sobre esta ferramenta
Um HMAC prova que uma mensagem veio de alguém que conhece um segredo compartilhado e não foi adulterada — o mecanismo por trás de webhooks assinados, assinatura de requisições de API e muitos esquemas de token. Digite sua mensagem e chave secreta, escolha SHA-256, SHA-384 ou SHA-512 e obtenha a assinatura em hexadecimal ou Base64.
O cálculo usa a Web Crypto API nativa do navegador e acontece inteiramente no seu dispositivo, então sua chave secreta nunca é transmitida. Atualiza ao vivo enquanto você digita.
Perguntas frequentes
Para que serve o HMAC?
O HMAC (código de autenticação de mensagem baseado em hash) prova tanto que uma mensagem não foi alterada quanto que veio de alguém que conhece uma chave secreta compartilhada — é assim que serviços como Stripe ou GitHub assinam payloads de webhook para você verificar a autenticidade.
HMAC é o mesmo que apenas fazer hash da mensagem?
Não. Um hash simples (SHA-256 só da mensagem) pode ser recalculado por qualquer pessoa, então não prova nada sobre a origem. O HMAC mistura uma chave secreta usando uma construção resistente a ataques de extensão de comprimento, então só quem possui a chave pode gerar uma assinatura válida.
Minha chave secreta é enviada para algum lugar?
Não. O HMAC é calculado localmente com a Web Crypto API do navegador (crypto.subtle). Sua chave e mensagem nunca saem do seu dispositivo.
Por que a verificação da assinatura diz "não corresponde" mesmo tendo copiado corretamente?
Cabeçalhos de webhook costumam ter um prefixo como sha256=<hex>, usar outra capitalização ou ter espaços em branco ao redor. O verificador normaliza a capitalização e remove automaticamente um prefixo algorithm=, mas confira se você escolheu o mesmo algoritmo de hash e a mesma codificação de chave (UTF-8/Hex/Base64) que o remetente usou.
Qual codificação de chave devo escolher?
A maioria das APIs fornece uma string secreta em UTF-8 simples (por exemplo, whsec_...) — use UTF-8. Escolha Hex ou Base64 apenas se a documentação do provedor disser explicitamente que a chave está codificada dessa forma.