Desenvolvedor / Assinaturas
Gerador de HMAC (SHA-256, SHA-512)
Gere uma assinatura HMAC para uma mensagem e uma chave secreta usando SHA-256, SHA-384, SHA-512 ou SHA-1, em hexadecimal e Base64, para testar assinaturas de webhooks e APIs.
Gerador de HMAC (SHA-256, SHA-512): O HMAC combina uma chave secreta com uma mensagem por meio de uma função hash, de modo que somente alguém com a chave possa produzir a mesma assinatura. O cálculo é feito com a API Web Crypto do seu navegador, a mesma implementação usada pelo navegador para HTTPS. Uma chave vazia é permitida; ela é tratada como uma chave de zero bytes, conforme definido pelo padrão HMAC. Roda 100% localmente no seu navegador, sem enviar nenhum arquivo para o servidor.
- Categoria
- Ferramentas para desenvolvedores
- Execuções
- No seu navegador
- Custo
- Grátis · sem cadastro
- Disponibilidade
- Pronto para usar
Roda inteiramente no seu navegador
——A mensagem é lida como texto UTF-8, exatamente como foi digitada, incluindo espaços e quebras de linha; uma nova linha no final altera o resultado. Webhooks de serviços como Stripe e GitHub são assinados com HMAC-SHA256 dessa forma.
Verificando um webhook
Pegue o corpo bruto da requisição antes de qualquer análise, calcule o HMAC com o segredo compartilhado e compare-o com o cabeçalho de assinatura usando uma comparação em tempo constante, para que o tempo não revele quantos caracteres coincidiram. Rejeite requisições cujo timestamp tenha mais de alguns minutos, para impedir replays.
Para obter um hash sem chave, use o gerador de hash; para tokens assinados, use o decodificador de JWT.
Chaves
Uma chave tão longa quanto a saída do hash — 32 bytes aleatórios para SHA-256 — oferece a força total; chaves mais longas são reduzidas por hash primeiro. Mantenha as chaves fora dos repositórios de código e faça a rotação delas se vazarem.
Como usar
- Cole a mensagem exatamente como foi enviada, por exemplo, o corpo bruto de um webhook.
- Insira a chave secreta como texto ou hexadecimal e escolha o hash.
- Compare o resultado em hexadecimal ou Base64 com a assinatura recebida.
Privacidade e limitações
A mensagem e a chave permanecem no seu navegador; nada é enviado para nenhum lugar.
Ferramentas relacionadas
Perguntas frequentes
Por que minha assinatura não corresponde à do webhook?
A mensagem assinada precisa ser o corpo bruto, byte a byte: analisar e serializar novamente o JSON, ou remover ou adicionar uma quebra de linha, altera o conteúdo. Alguns serviços assinam o timestamp e o corpo juntos, como Stripe: t=…,payload.
O HMAC-SHA1 ainda é seguro?
Para HMAC, ele ainda é considerado seguro, ao contrário do SHA-1 usado para hashing simples, mas sistemas novos devem usar HMAC-SHA256.
Hexadecimal ou Base64?
São duas formas de representar os mesmos bytes; use a opção exibida pelo serviço. O GitHub usa hexadecimal com o prefixo sha256=; muitos outros usam Base64.
Ferramenta grátis · no seu navegador execuções · não precisa de conta