Gerador de HMAC

Assine uma mensagem com uma chave secreta como fazem webhooks e APIs, e compare com a assinatura que você recebeu.

Nível 0 · navegador · ilimitado
28 caracteres
HMAC (hex)
e5baf92b7e6dd88835c2ddffba344054ae109c96cf8cec2e82200ea4742f8923
Hexe5baf92b7e6dd88835c2ddffba344054ae109c96cf8cec2e82200ea4742f8923
Base645br5K35t2Ig1wt3/ujRAVK4QnJbPjOwugiAOpHQviSM=

Para que serve o HMAC

Um HMAC é um hash misturado com uma chave secreta. Qualquer pessoa calcula o SHA-256 de uma mensagem, mas só quem conhece a chave produz o HMAC-SHA256, então quem recebe sabe que a mensagem veio mesmo do remetente e não foi alterada. Provedores de pagamento e plataformas assinam webhooks assim (Stripe, GitHub, Mercado Pago, Paddle), corretoras assinam requisições de API e JWTs com HS256 são assinaturas HMAC-SHA256.

Para conferir um webhook, pegue o corpo bruto da requisição exatamente como chegou, o segredo compartilhado, e compare o HMAC calculado aqui com o cabeçalho de assinatura. Um espaço a mais ou um JSON reserializado dá um resultado totalmente diferente.

Exemplo resolvido

O caso de teste 2 da RFC 4231 assina what do ya want for nothing? com a chave Jefe. O HMAC-SHA256 dá 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843, que esta página reproduz. Mudar a chave para jefe muda a assinatura inteira.

Formatos de chave

A maioria dos serviços entrega o segredo como texto. Alguns entregam como bytes em hex ou Base64; escolha esse formato para usar os bytes, e não os caracteres, como chave.

Como funciona

A página codifica a mensagem em UTF-8, decodifica a chave no formato escolhido e calcula o HMAC definido na RFC 2104 com a API Web Crypto do navegador: a chave é completada até o tamanho do bloco do hash, combinada por XOR com uma constante interna e outra externa, e a mensagem passa pelo hash duas vezes. A assinatura aparece em hexadecimal e Base64, as duas codificações que os serviços usam nos cabeçalhos. A implementação é conferida com os vetores da RFC 4231. A chave fica nesta aba e nunca é guardada.

Perguntas frequentes

Por que a assinatura do meu webhook não bate?

Calcule sobre o corpo bruto exatamente como chegou. Ler e reserializar o JSON muda espaços e a ordem das chaves, o que muda o HMAC. Confira também o formato da chave e se um timestamp vai na frente.

HMAC-SHA1 ainda é seguro?

O HMAC-SHA1 não tem ataque prático, ao contrário do SHA-1 puro, mas sistemas novos devem usar HMAC-SHA256.

Qual deve ser o tamanho da chave?

Pelo menos o tamanho da saída do hash: 32 bytes para SHA-256, 64 para SHA-512 (RFC 2104 e RFC 7518).

Minha chave secreta é enviada?

Não. Ela é usada só no navegador e nunca é guardada.

Fontes

Revisado em 17 de out. de 2026 · vetores de teste fixtures/dev/hmac-generator/