Gerador de HMAC
Gere uma assinatura HMAC a partir de uma mensagem e uma chave secreta.
Como usar Gerador de HMAC
- Cole a mensagem que deseja assinar.
- Digite a chave secreta compartilhada pelas duas partes.
- Escolha um algoritmo — HMAC-SHA-256 se estiver em dúvida — e copie o resultado.
Sobre Gerador de HMAC
HMAC significa Hash-based Message Authentication Code (Código de Autenticação de Mensagem baseado em Hash), definido na RFC 2104. Ele mistura uma chave secreta ao processo de hashing, e essa única adição muda o que a saída comprova. Um hash simples só prova que algum dado produziu algum digest — se um atacante consegue mudar a mensagem, ele pode simplesmente recalcular o hash para corresponder, e nada parece errado. Com o HMAC, ele não consegue produzir um código válido sem a chave, então o destinatário obtém tanto a integridade (a mensagem não foi alterada) quanto a autenticidade (ela veio de alguém que possui a chave).
O HMAC não é apenas "fazer hash da chave e da mensagem juntas" — ele usa uma construção aninhada, fazendo hash duas vezes com dois valores de chave derivados. Essa estrutura é o que torna o HMAC imune ao ataque de extensão de comprimento que afeta o SHA-256 e o SHA-512 puros, em que um atacante que conhece um digest pode anexar dados e calcular um novo digest válido sem conhecer a entrada original. É um motivo real pelo qual esquemas ingênuos do tipo hash(secreto + mensagem) falham e o HMAC não.
Você quase certamente já usou HMAC sem perceber. As assinaturas de webhook do Stripe e do GitHub são HMACs — o cabeçalho que você compara é calculado a partir do corpo bruto da requisição e do seu segredo de assinatura. A assinatura de requisições da AWS o utiliza. Assim como os JWTs assinados com HS256, que você pode desmontar com nosso decodificador de JWT. O HMAC-SHA-256 é o padrão usual e a escolha certa para novos projetos. O HMAC-MD5 é um caso interessante: ainda é considerado aceitável como MAC apesar da fraqueza de colisão do MD5, porque a segurança do HMAC não depende da resistência a colisões — mas não há um bom motivo para escolhê-lo em um novo projeto.
Perguntas frequentes
Qual é a diferença entre HMAC e um hash simples?
Um hash simples não prova nada se um atacante conseguir mudar a mensagem, porque ele também pode recalcular o hash. O HMAC incorpora uma chave secreta, então só quem possui a chave consegue produzir um código válido — isso garante autenticidade além de integridade.
Qual algoritmo devo escolher?
HMAC-SHA-256, a menos que algo específico indique o contrário — é o padrão comum para webhooks, assinatura de APIs e JWT HS256.
O HMAC-MD5 é seguro?
Ainda é considerado aceitável como MAC mesmo que o próprio MD5 esteja quebrado quanto a colisões, porque o HMAC não depende de resistência a colisões. Dito isso, não o escolha para um novo projeto — use HMAC-SHA-256.
Por que a assinatura do meu webhook não corresponde?
Quase sempre porque os bytes da mensagem são diferentes. Assine exatamente o corpo bruto da requisição — não uma versão reserializada — e verifique se há uma quebra de linha no final ou uma codificação de chave diferente.
Minha mensagem e minha chave são armazenadas?
Não. Ambas são enviadas ao nosso servidor porque os navegadores não conseguem calcular a maioria destes algoritmos, depois são usadas no cálculo e descartadas imediatamente — nunca registradas, nunca armazenadas. Para uma chave de assinatura em produção real, fazer isso na sua própria máquina ainda é o hábito mais seguro.

