HMAC-SHA1, SHA-256, SHA-384 e SHA-512 de texto ou de um arquivo, e verificação de assinaturas
Funciona no seu navegador. Nada do que você digita é enviado a lugar nenhum.Um HMAC prova que uma mensagem veio de alguém que tem o segredo compartilhado; é assim que se verifica um webhook. SHA-1, SHA-256, SHA-384 e SHA-512 são suportados, em texto ou em um arquivo de até 200 MB. O segredo nunca sai do seu navegador, o que importa para uma chave de assinatura.
Esta página foi traduzida automaticamente do original em inglês. Nenhuma pessoa revisou ainda a tradução; a versão em inglês é a que deve ser considerada. Ler o original em inglês
Escolha SHA-1, SHA-256, SHA-384 ou SHA-512 em Algoritmo.
Digite a Chave secreta e indique se ela está escrita como Texto, Hex ou Base64.
Cole a mensagem em Texto, ou mude para Arquivo e clique em Escolher um arquivo.
Copie o resultado em Hex, Base64 ou Base64URL pelo ícone de copiar; Ctrl+Enter copia o hex.
Este gerador de HMAC calcula um hash com chave de um texto ou arquivo com SHA-1, SHA-256, SHA-384 ou SHA-512 e mostra o resultado em hex, Base64 e Base64 seguro para URL enquanto você digita. Ele também verifica: cole a assinatura esperada e ele diz se ela confere.
HMAC é como dois sistemas provam que uma mensagem veio de alguém que tem um segredo compartilhado e que não foi alterada no caminho. Desenvolvedores recorrem a ele quando o webhook de um provedor de pagamentos falha na verificação e é preciso saber se o problema está no segredo, no corpo ou no cabeçalho, quando escrevem uma função de assinatura e a conferem com uma resposta conhecida, ou quando a documentação de uma API mostra uma assinatura de exemplo para reproduzir.
A chave pode ser digitada como texto, hex ou Base64, porque os provedores publicam segredos nos três formatos. A assinatura esperada pode estar em hex ou Base64 e pode manter o prefixo do cabeçalho, como sha256= do GitHub ou o formato t=,v1= da Stripe. A comparação é feita em tempo constante, como o seu servidor também deveria fazer.
Tudo acontece no seu navegador pela Web Crypto API. A chave e a mensagem nunca são enviadas, registradas ou salvas, nem mesmo neste navegador; só o algoritmo e o formato de chave escolhidos são lembrados. É possível assinar arquivos de até 200 MB, já que o arquivo inteiro precisa estar na memória de uma vez.
Quando a verificação de um webhook falha, a causa comum é o corpo: a assinatura cobre os bytes brutos exatos, e um corpo JSON reserializado por um framework não vai conferir. Ferramentas relacionadas: JWT Decoder, Base64 Encoder, Bcrypt Hash and Verify.
Escolha SHA-256, digite ou cole a chave secreta e depois digite a mensagem ou escolha um arquivo. A assinatura aparece na hora em hex e Base64; clique em Copiar ao lado da que a sua API espera. Se a sua chave vier em hex ou Base64 em vez de texto, troque antes o formato da chave, porque os mesmos caracteres decodificam em bytes diferentes.
Não. O HMAC é calculado no seu navegador com a Web Crypto API, e a chave e a mensagem nunca saem da página. Nada do que você digita é registrado ou salvo, nem mesmo no armazenamento local. Só o algoritmo e o formato de chave escolhidos ficam lembrados neste dispositivo para a próxima vez.
Geralmente o corpo não é, byte a byte, o que o remetente assinou: um framework analisou e reserializou o JSON, mudou as quebras de linha ou removeu espaços. Assine o corpo bruto. Outras causas são usar o segredo errado (as chaves de teste e de produção são diferentes), tratar um segredo em hex como texto ou comparar hex com uma assinatura em Base64.
Qualquer pessoa pode calcular um hash comum, então ele não prova nada sobre quem o fez. O HMAC mistura uma chave secreta, de modo que só quem tem a chave consegue produzir o valor correto. Ele também foi feito para resistir a ataques de extensão de comprimento, que quebram a abordagem ingênua de calcular o hash da chave seguida da mensagem.
Uma comparação de strings comum para no primeiro caractere diferente, então o tempo que leva revela quanto de uma assinatura chutada estava certo. Medido ao longo de muitas requisições, isso permite que um atacante monte uma assinatura válida byte a byte. Esta ferramenta compara todos os bytes sempre, e o código do seu servidor também deveria.
Mensagens de texto de qualquer tamanho prático e arquivos de até 200 MB, porque a Web Crypto precisa da mensagem inteira na memória. SHA-1, SHA-256, SHA-384 e SHA-512 são suportados; o MD5 não existe na Web Crypto e, de qualquer forma, não deve ser usado em novas assinaturas. As chaves precisam ter pelo menos um byte.
Ainda com dúvidas? Pergunte sobre Gerador de HMAC e qualquer pessoa que saiba pode responder. Não é preciso ter conta.