Ferramentas
Guias

Gerador de HMAC

Cripto

Calcula assinaturas HMAC-SHA-1/256/384/512 com Web Crypto. Saída em Hex ou Base64, tudo no seu navegador.

100% no cliente Sem backend

URLs remotas não são buscadas; cole seu JSON diretamente.

Insira uma mensagem e uma chave secreta para calcular o HMAC.
HMAC
Sua chave secreta nunca sai do navegador.
Nesta página

O que é o HMAC?#

HMAC significa Hash-based Message Authentication Code (Código de Autenticação de Mensagem baseado em Hash). Um hash simples (como SHA-256) responde à pergunta “este fluxo de bytes mudou?”. O HMAC responde a uma pergunta mais forte: “este fluxo de bytes mudou, e foi enviado por alguém que realmente compartilha a minha chave secreta?”. A diferença importa sempre que uma mensagem viaja por um canal em que não confia totalmente — callbacks de webhook, URLs assinadas, assinatura de pedidos de API, tokens entre serviços.

Mecanicamente, o HMAC mistura uma chave secreta na função hash de uma forma definida (dois rounds, com preenchimento) de modo a que o resumo não possa ser forjado sem a chave. A saída é uma string de bytes de comprimento fixo cujo tamanho corresponde ao hash subjacente: 20 bytes para SHA-1, 32 para SHA-256, 48 para SHA-384, 64 para SHA-512.

Esta página calcula o HMAC no seu navegador usando a Web Crypto API. Escolhe o hash, cola a mensagem e o segredo, e obtém o resumo em hex ou base64.

Como usar#

  1. Escreva ou cole a Mensagem — o payload que quer autenticar. São estes os bytes que o receptor vai fazer hash do seu lado.
  2. Introduza a Chave secreta. O campo está mascarado por padrão; clique no botão do olho à direita para o revelar enquanto escreve. Tanto a chave como a mensagem são codificadas como UTF-8.
  3. Escolha o Algoritmo:
    • SHA-1 — 160 bits. Rápido, mas só adequado para HMAC legado (alguns fluxos de assinatura mais antigos ainda o exigem). Não use SHA-1 para assinaturas digitais.
    • SHA-256 — 256 bits. A predefinição moderna; a esmagadora maioria das assinaturas de webhook (fluxos ao estilo Stripe, GitHub, Slack) usa HMAC-SHA-256.
    • SHA-384 / SHA-512 — resumos mais longos, marginalmente mais resistente a colisões, ligeiramente mais lento. Escolha um quando o sistema receptor o exige explicitamente.
  4. Escolha a codificação de Saída: hex (típico para cabeçalhos ao estilo X-Signature) ou base64 (típico quando o resumo é embutido em JSON ou num token).
  5. Clique em Gerar. O resumo aparece no painel da direita; a linha de estado mostra o algoritmo e o comprimento em bytes como uma verificação rápida. Copiar para o recolher.

Principais funcionalidades#

  • Suportado por Web Crypto. Usa o crypto.subtle nativo do navegador, o mesmo primitivo que o código de produção usa — não uma reimplementação em JavaScript.
  • Verificação de consistência do comprimento. Cada resumo é verificado contra o comprimento de bytes esperado para o seu algoritmo, pelo que um resultado truncado ou adulterado não passa silenciosamente.
  • Saída hex ou base64. Alternar com um clique; sem reescrever.
  • O segredo fica local. O campo da chave é renderizado como entrada de senha e nunca sai da página — não há backend.
  • Conhecedor de contexto seguro. Se a página fosse alguma vez carregada sobre HTTP simples, o crypto.subtle está indisponível e a ferramenta reporta-o explicitamente em vez de produzir uma resposta errada.

Exemplo prático#

O par canónico de referência (RFC 4231) usa uma chave Jefe e a mensagem what do ya want for nothing?. Com esta página definida como SHA-256 e hex, o resumo é:

5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843

Mude para SHA-512 com as mesmas entradas e o resumo duplica de comprimento:

164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737

Pode reproduzir ambos aqui mesmo: carregue em Exemplo, depois Gerar. Este par exato é também como a própria suíte de testes desta ferramenta verifica a correção — se alguma vez obtiver um resumo diferente, algo adulterou a página.

FAQ#

SHA-256 ou SHA-512 — qual devo usar?#

Para HMAC em particular, SHA-256 é a predefinição pragmática: todos os principais assinantes de webhook o usam, é rápido, e 256 bits de resumo já estão muito para além do território da força bruta. Mude para SHA-512 apenas quando (a) o sistema receptor o exige, ou (b) está desenhando um protocolo novo do zero e quer a margem de colisão extra a um custo de velocidade modesto. Evite SHA-1 inteiramente a menos que esteja correspondendo a um sistema legado que o exija.

O HMAC é o mesmo que encriptar a mensagem?#

Não. O HMAC só autentica — prova que a mensagem não foi alterada e que veio de alguém com a chave. A mensagem em si fica em texto simples. Se também precisa de confidencialidade, junte o HMAC a um esquema de encriptação, ou use um modo de encriptação autenticada como AES-GCM.

A chave secreta pode ser recuperada a partir do resumo?#

Não. O resumo é uma função unidirecional tanto da mensagem como da chave; recuperar a chave a partir das saídas é computacionalmente inexequível. Dito isto, uma chave curta ou adivinhável pode ainda assim ser atacada por força bruta tentando chaves candidatas offline — pelo que deve usar uma chave com pelo menos 128 bits de entropia real, não uma senha escolhida por humano.

O receptor diz que a minha assinatura não corresponde. O que verifico primeiro?#

Nove em cada dez vezes é a representação em bytes da mensagem: mudanças de linha finais, codificação de URL versus corpo em bruto, espaços em branco do JSON, ou uma ordem de campos diferente. Compare os bytes exatos que assinou contra os bytes exatos que o receptor fez hash, carácter a carácter, antes de verificar mais alguma coisa.