Gerador de HMAC
Assine uma mensagem com uma chave secreta. Nada é transmitido.
- Executa no seu navegador — seu texto nunca é enviado a lugar nenhum
- Sem cadastro, sem cotas, grátis para usar quantas vezes quiser
Como funciona
Um HMAC comprova duas coisas ao mesmo tempo: que a mensagem não foi alterada e que quem a produziu possui o segredo compartilhado. É ele que assina webhooks, requisições de API e links de download em grande parte da web.
Diferente de um hash simples, no ponto que importa
Qualquer pessoa pode calcular o SHA-256 de uma mensagem, então um hash puro não prova nada sobre quem o criou — altere a mensagem, recalcule o hash e ninguém percebe. Um HMAC incorpora uma chave secreta ao cálculo, de modo que não pode ser recalculado sem a chave. Esse é todo o ponto, e é por isso que as assinaturas de webhook usam HMAC em vez de um hash.
Verificando com segurança
Ao verificar um HMAC em um servidor, compare-o com uma função de tempo constante — crypto.timingSafeEqual no Node, hash_equals no PHP. Um == comum retorna assim que dois bytes diferem, e o tempo que isso leva revela quanto da assinatura estava certo, o que basta para forjar uma com paciência. É um ataque real, não teórico.
Qual algoritmo
SHA-256, a menos que algo especifique outro. O SHA-1 está incluído porque muitas APIs antigas ainda exigem HMAC-SHA-1, e o HMAC-SHA-1 não foi quebrado como o SHA-1 simples — mas não há motivo para escolhê-lo em algo novo.
Hex ou Base64
Depende apenas do que o outro lado espera. O hex é duas vezes mais longo e mais fácil de ler; o Base64 é mais compacto e comum em cabeçalhos HTTP. A mesma assinatura é exibida nos dois formatos.
Sua chave fica aqui
Gerado com a Web Crypto API do próprio navegador. A chave e a mensagem nunca são enviadas a lugar nenhum, que é a única forma responsável de oferecer isto — uma ferramenta de assinatura que envia seu segredo entregou justamente aquilo que o segredo protege.
Gerador de HMAC — perguntas
Qual é a diferença entre HMAC e um hash?
Qualquer pessoa pode recalcular um hash. Um HMAC precisa da chave secreta, então comprova quem o produziu.
Qual algoritmo devo usar?
SHA-256, a menos que uma API especifique outro. O SHA-1 é oferecido para sistemas mais antigos que ainda o exigem.
Devo usar hex ou Base64?
O que o outro lado esperar. Os dois são exibidos para a mesma assinatura.
Por que a comparação precisa ter tempo constante?
Uma comparação normal termina assim que encontra a primeira diferença, e a variação de tempo revela quanto estava correto — o suficiente para forjar uma assinatura.
Minha chave secreta é enviada para algum lugar?
Não. Tudo é executado no seu navegador, por meio da Web Crypto API.