HMAC Generator
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
- Paste or type your input in the input area above.
- The tool processes your input automatically or click Run.
- Copy or download the result using the action buttons.
- Use Ctrl+Enter to run quickly from the keyboard.