tigtools

Gerador de HMAC

Calcule um código de autenticação de mensagem com chave (HMAC) para uma mensagem e uma chave secreta ou confira uma assinatura recebida. A chave e a mensagem permanecem no seu navegador.

Executado no seu navegador Sem cadastro

A chave e a mensagem são processadas somente nesta aba do navegador e nunca são enviadas a lugar algum. Ainda assim, evite colar segredos de produção em um computador compartilhado ou não confiável.
Formato da chave

Assinada em UTF-8 exatamente como foi digitada. Um espaço ou uma quebra de linha no final altera o resultado.

Formato de saída

Cole uma assinatura em hexadecimal (maiúsculas ou minúsculas) ou Base64 para compará-la com o resultado acima.

Como usar

  1. Insira a chave secreta e escolha se ela está em texto simples ou em bytes hexadecimais.
  2. Cole a mensagem, por exemplo, o conteúdo de um webhook exatamente como foi recebido.
  3. Escolha o algoritmo e a codificação de saída usados pelo seu serviço; o HMAC é atualizado enquanto você digita.
  4. Para conferir uma assinatura, cole-a no campo de verificação e procure por “Corresponde”.

Como funciona

HMAC (RFC 2104) combina uma chave secreta com uma função de hash para gerar uma assinatura que só alguém com a chave pode criar. Serviços como webhooks e solicitações de API assinadas enviam um HMAC com cada mensagem para que o destinatário possa verificar se ela é autêntica e não foi alterada.

Esta ferramenta usa a Web Crypto API do seu navegador (crypto.subtle.importKey e sign) e é validada com os vetores de teste RFC 4231 e RFC 2202. A chave de texto e a mensagem são codificadas em UTF-8. Uma chave hexadecimal é decodificada em bytes brutos; espaços, dois-pontos e um 0x no início são ignorados. HMAC-SHA-256 é a opção mais comum; HMAC-SHA-1 ainda é considerado seguro como MAC, mas é usado principalmente por APIs mais antigas.

Se sua assinatura não corresponder, confira os detalhes que mais costumam variar: os bytes exatos da mensagem (muitos provedores de webhook assinam o corpo bruto, não o JSON reformatado), um registro de data e hora ou prefixo que o provedor adiciona à string assinada, se a chave deve ser usada como texto ou primeiro decodificada de hexadecimal ou Base64 e se a assinatura esperada está em hexadecimal ou Base64 e tem um prefixo como “sha256=”, que deve ser removido antes da comparação.

Exemplos

Caso de teste RFC 4231

A chave “Jefe” (texto), a mensagem “what do ya want for nothing?” e HMAC-SHA-256 geram 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Use “Testar um exemplo” para carregar esses dados.

Verificar a assinatura de um webhook

Um provedor envia o cabeçalho X-Signature: sha256=… com cada solicitação. Cole o corpo bruto da solicitação como mensagem, use o segredo do webhook como chave, selecione HMAC-SHA-256 e Hex e cole no campo de verificação o valor que vem depois de “sha256=”.

Uma chave codificada em hexadecimal

Alguns sistemas fornecem chaves como strings hexadecimais, por exemplo 0b0b0b…. Selecione Hex como formato da chave para que a ferramenta assine usando os bytes decodificados; tratar a mesma string como texto gera um resultado completamente diferente.

Perguntas frequentes

Qual é a diferença entre um HMAC e um hash simples?

Qualquer pessoa pode calcular o hash simples de uma mensagem, como SHA-256. Um HMAC também depende de uma chave secreta, então só alguém com essa chave pode gerá-lo ou verificá-lo. Isso comprova que a mensagem veio de alguém que possui a chave e não foi alterada.

Por que meu HMAC é diferente do gerado pelo servidor?

Quase sempre, os bytes de entrada são diferentes: quebras de linha, espaços em branco, ordem das chaves do JSON, codificação de caracteres ou uma chave que deveria ser decodificada de hexadecimal ou Base64. Compare também usando a mesma codificação (hexadecimal ou Base64) e remova prefixos como “sha256=”.

Minha chave secreta é enviada para algum lugar?

Não. A chave e a mensagem são usadas apenas pela Web Crypto API nesta aba do navegador. Elas não são enviadas, armazenadas nem incluídas em ferramentas de análise.

O HMAC-SHA-1 ainda é seguro?

Colisões em SHA-1 não comprometem diretamente o HMAC-SHA-1, que ainda é aceito por compatibilidade. Para novos sistemas, use HMAC-SHA-256 ou uma versão mais forte.

Privacidade

A chave, a mensagem e o resultado existem apenas nesta aba do navegador. Nada é enviado, armazenado ou encaminhado para ferramentas de análise; somente é registrado um evento anônimo indicando que a ferramenta foi usada.