DevToolPal
PT

Gerador de HMAC

Calcule HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512 de uma mensagem com uma chave secreta, em hexadecimal ou Base64.

Roda localmente, nada é enviado

Opções

Formato da chave
Saída

Mensagem

0 caracteres · 0 B

HMAC

O resultado aparece aqui

O que faz

HMAC (código de autenticação de mensagem baseado em hash, RFC 2104) combina uma chave secreta com uma função hash para assinar uma mensagem. O destinatário, que conhece a mesma chave, recalcula o HMAC e compara com o valor recebido. Se a mensagem foi alterada ou o remetente não conhecia a chave, os valores não batem.

HMACs estão em toda parte: assinaturas de webhooks (GitHub, Stripe, Slack), requisições de API assinadas, JWT com HS256, assinatura de cookies e senhas de uso único. Esta ferramenta calcula ao mesmo tempo HMAC-MD5, HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512, para você comparar com o que o seu sistema usa.

Como usar

  1. Digite a Chave secreta. Mude o Formato da chave se ela vier em bytes hex ou Base64 em vez de texto.
  2. Cole a Mensagem ou clique em Exemplo.
  3. Todos os HMACs atualizam enquanto você digita. Escolha saída Hex ou Base64 e copie o valor desejado.

A mensagem é codificada em UTF-8 exatamente como digitada, incluindo espaços e quebras de linha.

Exemplo

Com a chave key e a mensagem The quick brown fox jumps over the lazy dog, o HMAC-SHA256 é f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8. Você pode conferir na linha de comando:

echo -n "The quick brown fox jumps over the lazy dog" | openssl dgst -sha256 -hmac "key"

Repare no -n: sem ele, o echo adiciona uma quebra de linha e o HMAC muda.

Verificando webhooks

Para verificar um webhook, pegue o corpo bruto da requisição antes de interpretar o JSON, monte a string que o provedor documenta (muitas vezes timestamp.body), calcule o HMAC com o seu segredo de assinatura e compare com o cabeçalho de assinatura. No seu código, compare assinaturas com uma função de tempo constante para evitar ataques de temporização.

Perguntas frequentes

› Qual a diferença entre um hash e um HMAC?

Qualquer pessoa pode calcular um hash simples como o SHA-256. O HMAC mistura uma chave secreta ao hash, então só quem conhece a chave consegue gerar ou conferir o valor. É um código de autenticação de mensagem, não apenas um checksum.

› Qual algoritmo HMAC devo usar?

HMAC-SHA256 é a escolha comum e é o que a maioria das APIs e webhooks espera. HMAC-SHA512 também serve. HMAC-MD5 e HMAC-SHA1 ainda são considerados seguros como MAC, mas use-os só quando um sistema antigo exigir.

› Por que meu HMAC não bate com o do servidor?

Confira os bytes exatos da mensagem (uma quebra de linha no final ou um espaçamento JSON diferente muda tudo), o formato da chave (texto, hex ou Base64) e a codificação da saída. Provedores de webhook costumam assinar uma string montada com um timestamp e o corpo bruto da requisição.

› Minha chave secreta é salva ou enviada?

Não. O HMAC é calculado no seu navegador. A chave fica apenas na memória desta página: não é salva, não vai para a barra de endereços e não entra nos links de compartilhamento.