Ferramenta para desenvolvedores

Gerador de HMAC

Assine uma mensagem com uma chave secreta. Nada é transmitido.

Gerador de HMAC Executa no seu dispositivo
  • 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.

Perguntas frequentes

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.