Gerador de HMAC

Calcule assinaturas HMAC-SHA-256 e HMAC-SHA-512 com a sua chave secreta — direto no seu navegador.

Como usar

  1. Cole a mensagem que você quer autenticar no campo de entrada.
  2. Informe sua chave secreta, escolha HMAC-SHA-256 ou HMAC-SHA-512 e clique em "Calcular HMAC".
  3. Copie a assinatura em hex minúsculo. Tanto a chave quanto a mensagem são processadas localmente e nunca saem do seu navegador.

Sobre esta ferramenta

HMAC (Hash-based Message Authentication Code, RFC 2104) combina uma chave secreta com uma mensagem para produzir uma assinatura que só quem tem a mesma chave consegue reproduzir. É o mecanismo por trás da maioria das verificações de webhook — Stripe, GitHub, Shopify e Slack assinam os payloads de seus webhooks com HMAC-SHA-256 — além de URLs assinadas, assinatura de requisições de API e checagens de integridade de tokens de sessão. Quando uma validação de webhook falha, calcular a assinatura esperada na mão com esta ferramenta costuma ser o jeito mais rápido de achar a divergência.

O cálculo usa o SubtleCrypto, a API WebCrypto nativa do navegador: a chave é importada com crypto.subtle.importKey e a assinatura produzida com crypto.subtle.sign, então a criptografia é a implementação auditada do próprio navegador, e não JavaScript reinventando a roda. HMAC não é simplesmente hash(chave + mensagem): ele faz o hash duas vezes, misturando a chave com dois paddings diferentes (veja a fórmula abaixo), o que fecha os ataques de extensão de comprimento que quebram a construção ingênua. A saída aqui reproduz exatamente os vetores de teste da RFC 4231.

Sua chave secreta nunca sai do navegador: esta ferramenta não faz nenhuma requisição de rede, não envia nada e não armazena nada — você pode confirmar isso na aba de rede das ferramentas de desenvolvedor do seu navegador. Duas notas práticas para código de produção: sempre compare assinaturas usando comparação em tempo constante para evitar ataques de timing, e garanta que os dois lados assinem exatamente os mesmos bytes — uma quebra de linha invisível no final ou um corpo JSON re-serializado é a causa mais comum de HMACs divergentes.

A fórmula

HMAC(K, m) = H((K xor opad) || H((K xor ipad) || m)), onde H é a função de hash e ipad (byte 0x36) e opad (byte 0x5c) são repetidos até o tamanho do bloco do hash. O hash duplo aninhado impede os ataques de extensão de comprimento que quebram construções ingênuas do tipo hash(chave + mensagem).

Perguntas frequentes

Para que serve um HMAC?

Ele prova que uma mensagem veio de alguém que possui a chave secreta e que ela não foi alterada no caminho. Usos típicos: verificar payloads de webhook (Stripe, GitHub, Shopify), assinar requisições de API e proteger URLs ou cookies contra adulteração.

Minha chave secreta sai do meu navegador?

Não. A chave e a mensagem são processadas 100% localmente pela API WebCrypto do seu navegador — nada é transmitido, registrado ou armazenado em lugar nenhum.

Por que meu HMAC não bate com o que meu servidor produz?

Quase sempre é diferença de codificação: uma quebra de linha no final, um corpo JSON re-serializado, UTF-8 contra outra codificação, ou saída em hex comparada com Base64. Assine exatamente os mesmos bytes com a mesma chave e as assinaturas vão bater.

Devo usar HMAC-SHA-256 ou HMAC-SHA-512?

Os dois são considerados seguros. HMAC-SHA-256 é o padrão da indústria e o que a maioria dos provedores de webhook usa; escolha HMAC-SHA-512 quando o lado receptor esperar uma assinatura de 128 caracteres.

HMAC é o mesmo que criptografia?

Não. O HMAC autentica uma mensagem, mas não a esconde — qualquer um ainda pode ler o conteúdo. Use criptografia para confidencialidade e HMAC (ou os dois, como na criptografia autenticada) para integridade e autenticidade.

Ferramentas relacionadas

Links longos? Encurte de graça

O Vai.la transforma qualquer URL em um link curto com estatísticas de cliques, QR Code e seu próprio biolink.

O Vai.la não se responsabiliza pelo uso das ferramentas nem por decisões tomadas com base nos seus resultados.