Pular para o conteúdo

Gerador de HMAC

HMAC Generator

Calcula um HMAC sobre uma mensagem com hash e codificação da chave escolhidos, para conferir assinaturas de webhooks.

Calcula um HMAC — um digest com chave — sobre um texto ou um arquivo, com a chave lida como texto, hexadecimal ou Base64. É a mesma tela da ferramenta de hash com a metade HMAC ligada, porque um HMAC é um hash com uma chave e separá-los significaria duas páginas que compartilham todos os controles.

🔒 Roda inteiramente no seu navegadorhmacsignaturewebhookcrypto
Saída

Entrada

Solte um arquivo para tirar o checksum

Lido nesta aba. Nada é enviado.

O texto é hasheado como bytes UTF-8, que é o que qualquer outra ferramenta quer dizer com hashear uma string.

Digests

Cole um checksum publicado; a linha que bater acende.

Uma linha por algoritmo, com o digest e um botão de copiar.
AlgoritmoDigestCopiar
MD5Construir colisões sai barato. Serve como checksum, não para assinaturas nem senhas.
SHA-1Colisões já foram demonstradas. Serve para um checksum antigo, não para nada novo.
SHA-256
SHA-384
SHA-512
CRC-32É um código detector de erro, não um hash. Dois arquivos podem cair no mesmo valor por acidente, que dirá de propósito.

Entrada

0 bytes

Origem

caixa de texto

Como usar

  1. Ligue o HMAC

    O campo de chave aparece, e o CRC-32 sai da tabela: é um checksum, não uma função de hash, e não tem HMAC.

  2. Diga como a chave deve ser lida

    É aqui que os HMACs normalmente dão errado. Uma chave escrita como `0a1b2c` são três bytes como hexadecimal e seis como texto, e as duas produzem digests completamente diferentes.

  3. Compare com a assinatura que te mandaram

    Cole na caixa de comparação; a linha que casar acende. As assinaturas de webhook do Stripe, do GitHub e do Slack são todas HMAC-SHA256 sobre uma string específica, então acertar a mensagem importa tanto quanto a chave.

Perguntas frequentes

Por que meu HMAC não bate com o do cabeçalho?

Normalmente é a mensagem, não a chave. Uma assinatura de webhook é calculada sobre uma string exata — muitas vezes o timestamp, um separador e o corpo cru —, e um corpo que passou por um parser JSON e foi reserializado é outra string. Assine os bytes que você recebeu.

HMAC é o mesmo que fazer o hash da chave e da mensagem juntas?

Não, e esse é o sentido dele. `hash(chave + mensagem)` é vulnerável a um ataque de extensão de comprimento em MD5, SHA-1 e SHA-256; a construção de duas passagens do HMAC, com o padding interno e o externo, é o que elimina isso. Nunca construa o seu.

A chave sai da aba?

Não. Ela é usada para importar uma chave WebCrypto nesta aba e nada mais: não é transmitida, não é armazenada, não vai para a URL. Recarregar a página a perde, que é o comportamento correto para um segredo.

Que comprimento a chave deve ter?

Pelo menos o do digest: 32 bytes para SHA-256. O HMAC aceita qualquer comprimento, mas uma chave maior que o tamanho do bloco passa primeiro por um hash, e uma chave curta é simplesmente uma chave curta: a segurança é a entropia que você coloca.

Pode receber de

Em seguida

Estas aceitam o que esta ferramenta produz, então o resultado pode ir direto.