Toolonit
  1. Início
  2. Criptografia
  3. HMAC

Gerador e verificador de HMAC

Crie e verifique assinaturas HMAC-SHA256 e outras variantes de HMAC com uma chave secreta.

0 bytes
Chave em
Algoritmo
Saída
HMAC-SHA-256Digite a chave secreta para ver o HMAC.

Opcional. O valor de um cabeçalho X-Hub-Signature-256 do GitHub (sha256=…) pode ser colado do jeito que está.

Um HMAC é uma assinatura gerada a partir de uma mensagem e de uma chave secreta compartilhada: quem tem a chave consegue calculá-lo de novo, e qualquer mudança na mensagem ou na chave gera outro valor. Webhooks (GitHub, Stripe, Slack), requisições de API assinadas e tokens JWT HS256 usam HMAC. O HMAC é atualizado enquanto você digita, e você pode colar uma assinatura para conferi-la. Ele é calculado pelo Web Crypto nativo do seu navegador, então a mensagem e a chave nunca saem do seu dispositivo; é grátis e não exige cadastro.

Como gerar e verificar um HMAC

  1. Cole a mensagem exatamente como foi assinada — no caso de um webhook, o corpo bruto da requisição.
  2. Digite a chave secreta ou clique em Gerar para criar uma aleatória; escolha Hex se você recebeu a chave como bytes em hex.
  3. Escolha o algoritmo (SHA-256, salvo indicação em contrário) e copie o resultado em hex ou Base64.
  4. Para conferir uma assinatura, cole-a em Verificar assinatura — o valor de um cabeçalho sha256=… do GitHub funciona do jeito que está.

Recursos

  • HMAC-SHA1, HMAC-SHA256, HMAC-SHA384 e HMAC-SHA512
  • Chave secreta em texto (UTF-8) ou hex, ou uma chave aleatória de 32 bytes com Gerar
  • Resultado em hex ou Base64, atualizado enquanto você digita
  • Confere uma assinatura recebida em hex ou Base64 (inclusive URL-safe), com ou sem o prefixo sha256= do GitHub ou v0= do Slack
  • Avisa quando uma assinatura tem o tamanho de outro algoritmo, com um botão para trocar
  • Calculado com o Web Crypto nativo do seu navegador

É privado?

Sim. O HMAC é calculado pelo Web Crypto nativo do seu navegador; a mensagem e a chave secreta ficam nesta página e nunca são enviadas nem salvas.

Perguntas frequentes

Como verificar a assinatura de um webhook do GitHub?

Cole o corpo bruto da requisição como mensagem, o secret do webhook como chave em texto e o valor do cabeçalho X-Hub-Signature-256 em Verificar assinatura. O GitHub envia sha256= seguido do HMAC-SHA256 do corpo em hex, e o prefixo é lido do jeito que está.

Como conferir a assinatura de um JWT HS256?

Cole o cabeçalho e o payload do token — tudo antes do segundo ponto — como mensagem e o segredo como chave, escolha SHA-256 e cole a terceira parte do token em Verificar assinatura. O Base64 URL-safe dela é lido do jeito que está.

Por que minha assinatura não confere?

A mensagem precisa ser, byte a byte, o que foi assinado: um JSON reformatado, uma quebra de linha a mais ou a menos no final ou quebras de linha do Windows (CRLF) mudam o HMAC. O texto digitado aqui usa quebras de linha LF. Confira também o algoritmo e se a chave é texto ou hex.

O resultado é igual ao do OpenSSL?

Sim. printf '%s' 'mensagem' | openssl dgst -sha256 -hmac 'chave' mostra o mesmo valor em hex, e uma chave em hex corresponde a -mac HMAC -macopt hexkey:…. Use printf ou echo -n: o echo simples acrescenta uma quebra de linha, que também é assinada.

O HMAC-SHA1 ainda é seguro?

Para HMAC, na prática sim: as colisões conhecidas do SHA-1 não quebram o HMAC-SHA1, e por isso webhooks mais antigos ainda o usam. Para qualquer coisa nova, escolha HMAC-SHA256.

Ferramentas relacionadas