HMAC Generator

One input per line. Output is numbered to match the input order.
Pinned tools are listed in your favourites on the home page.Copies a link to this tool that carries your current input, so it opens ready to run.Gives you an iframe snippet for putting this tool on your own site.
Ctrl+Enter Run  · Ctrl+Shift+C Copy  · Esc Clear

Understand HMAC Generator

Calcula um código de autenticação HMAC-SHA256, HMAC-SHA384 ou HMAC-SHA512 sobre uma mensagem usando uma chave secreta compartilhada.

How it works

O HMAC executa o hash duas vezes com a chave misturada em cada passagem, então produzir um código válido exige ter a chave. É essa a diferença em relação a um hash simples: qualquer um pode recalcular um digest SHA-256 sobre dados modificados, o que torna um digest solto inútil contra uma alteração deliberada, enquanto o HMAC vincula a integridade à posse do segredo. A saída tem a largura do hash subjacente — 32 bytes para SHA-256, mostrados aqui como 64 caracteres hexadecimais. Esta ferramenta trata a chave como texto UTF-8 e assina com o WebCrypto.

When to use it

  • Verificar um webhook do GitHub ou do Stripe recalculando a assinatura sobre o corpo bruto da requisição.
  • Depurar um AWS Signature V4 ou esquema semelhante de assinatura de requisição quando o servidor rejeita sua assinatura.
  • Confirmar que uma implementação de assinatura em outra linguagem produz uma saída byte a byte idêntica.
  • Montar à mão o segmento de assinatura de um JWT HS256 para ver como as peças se encaixam.
  • Derivar um token determinístico e não falsificável a partir do id de um registro mais um segredo do servidor.

Watch out for

  • Compare os códigos em tempo constante no código real. Usar === ou uma comparação comum de strings sai na primeira diferença de byte, o que vaza o prefixo correto ao longo de muitas tentativas; use crypto.timingSafeEqual, hmac.compare_digest ou o equivalente na sua linguagem.
  • Assine exatamente os bytes brutos. Interpretar o JSON e reserializá-lo muda o espaço em branco e a ordem das chaves, e o HMAC não vai bater. Capture o corpo da requisição antes que qualquer middleware de parsing o toque.
  • As codificações precisam coincidir. Esta ferramenta recebe uma chave em texto UTF-8 e devolve hexadecimal. Um provedor que publica um segredo em base64, ou que espera uma assinatura em base64, exige uma conversão explícita — codificação incompatível é a causa mais comum de uma assinatura que "deveria" bater.
  • Um HMAC prova origem e integridade, não atualidade. A menos que um timestamp ou nonce esteja dentro dos dados assinados e seja verificado, uma requisição capturada pode ser reenviada sem alteração e será validada.

Not the right tool for: Assinaturas que terceiros devem verificar mas não conseguir produzir. O HMAC é simétrico — a chave que verifica é a chave que assina —, então use um algoritmo assimétrico como RS256 ou Ed25519 quando quem verifica não pode ser capaz de forjar.

Frequently Asked Questions

O que é um código de autenticação de mensagem?

Um código de autenticação de mensagem (MAC) é um valor curto anexado a uma mensagem para verificar tanto sua integridade (não foi alterada) quanto sua autenticidade (veio do remetente esperado, que detém a chave secreta). O HMAC é a construção de MAC mais usada — combina uma função de hash com uma chave secreta.

O que é autenticação de API?

A autenticação de API prova a identidade de um cliente ao servidor antes de conceder acesso. O HMAC é usado em esquemas de assinatura de API: o cliente calcula o HMAC sobre a requisição (método + caminho + corpo + timestamp) com uma chave secreta compartilhada e envia o resultado em um cabeçalho. O servidor recalcula e compara.

O que é HMAC SHA256?

O HMAC-SHA256 aplica o SHA-256 como função de hash dentro da construção HMAC. Ele produz um código de autenticação de 256 bits (32 bytes). É a escolha mais comum para assinaturas de webhook (GitHub, Stripe) e para o AWS Signature V4. O HMAC-SHA512 produz um código de 512 bits, com margem de segurança maior.

How to Use HMAC Generator

  1. Paste or type your input in the input area above.
  2. The tool processes your input automatically or click Run.
  3. Copy or download the result using the action buttons.
  4. Use Ctrl+Enter to run quickly from the keyboard.