Gerador de HMAC
HMAC é o algoritmo por trás da maioria dos webhooks assinados, cabeçalhos AWS Signature v4 e tokens JWT HS256. Insira uma mensagem e uma chave secreta, escolha uma família de hash, e este gerador produz o HMAC exatamente como especificado na RFC 2104, útil para verificar o que seu backend está prestes a enviar ou reproduzir uma assinatura que você recebeu de uma API.
Como calcular um HMAC
-
1
Cole a mensagem
Os bytes exatos a serem assinados, um payload de webhook, uma solicitação canônica ou qualquer string.
-
2
Insira a chave secreta
Pode ser texto ou hexadecimal. O gerador preenche ou faz hash para o tamanho do bloco conforme a RFC.
-
3
Escolha o algoritmo de hash
SHA-256 é o padrão; escolha SHA-1, SHA-384, SHA-512 ou MD5 para compatibilidade legada.
-
4
Copie a assinatura
A saída é hexadecimal minúscula, pronta para colar em uma configuração de webhook ou em um cabeçalho de autorização.
HMAC nos bastidores
HMAC envolve uma função de hash simples em uma construção com chave para que a assinatura não possa ser forjada sem a chave.
A receita da RFC 2104
HMAC(k, m) = H((k' ⊕ opad) ∥ H((k' ⊕ ipad) ∥ m))
onde k' é a chave preenchida para o tamanho do bloco de hash, opad = 0x5c repetido e ipad = 0x36 repetido.
Opções de algoritmo
| Algoritmo | Tamanho do bloco | Comprimento da saída | Recomendado para |
|---|---|---|---|
| HMAC-SHA-256 | 64 bytes | 32 bytes | Padrão moderno, assinatura de webhook |
| HMAC-SHA-384 | 128 bytes | 48 bytes | Assinatura de API de maior segurança |
| HMAC-SHA-512 | 128 bytes | 64 bytes | Tokens de longa duração |
| HMAC-SHA-1 | 64 bytes | 20 bytes | Legado (AWS S3 v2, OAuth 1.0) |
| HMAC-MD5 | 64 bytes | 16 bytes | Apenas legado; evite para novos trabalhos |
Onde o HMAC aparece
- Webhooks do GitHub, Stripe, Shopify: cabeçalho
X-Hub-Signature-256,Stripe-Signature, etc. - AWS Signature v4: uma cadeia de HMAC-SHA256 sobre a solicitação canônica.
- JWT HS256: a assinatura do token é
HMAC-SHA-256(header.payload, secret). - Tokens de redefinição de senha: HMAC sobre user_id + expiração + um segredo do site.
Erros comuns
- Passar uma chave codificada em hexadecimal como texto em vez de decodificá-la para bytes primeiro.
- Assinar os bytes do payload errado: alguns webhooks assinam o corpo da solicitação bruta incluindo espaços em branco, outros assinam uma forma canônica.
- Usar
==em JavaScript ou Python para comparar assinaturas; sempre use uma comparação segura em tempo para resistir a ataques de tempo.
Perguntas frequentes
Quase sempre porque os bytes da mensagem diferem. Assinar o corpo analisado em JSON introduz mudanças de espaço em branco; assine o corpo da solicitação bruta. Também verifique se a chave é decodificada da mesma forma (hex vs bytes brutos) em ambos os lados.
Sim. Se a chave for mais curta que o tamanho do bloco de hash, ela é preenchida com zeros; se for mais longa, é feita hash primeiro. A RFC 2104 recomenda chaves com pelo menos o comprimento da saída (32 bytes para SHA-256).
O HMAC ainda é resistente a ataques conhecidos de colisão do MD5 porque o ataque não se transfere para a construção do HMAC. Ainda assim, use HMAC-SHA-256 para qualquer novo código, ferramentas e auditores esperam isso.
Sim. A mensagem e a chave secreta são enviadas ao nosso servidor por uma conexão HTTPS criptografada para que o HMAC seja calculado. Elas são usadas apenas para o cálculo e não são armazenadas nem registradas.
Ferramentas relacionadas
Codificador de Arquivos Base64
Codifique qualquer arquivo (PDF, ZIP, imagem, executável) em texto Base64 para embutir em JSON, e-mail, YAML ou URIs de dados. Funciona localmente, sem upload.
Codificador de Cifra A1Z26
Codifique texto usando a cifra A1Z26 (A=1, B=2, ... Z=26) ou decodifique uma sequência de números de volta para letras, com separador personalizável.
Codificador e Decodificador Base32
Codifique e decodifique strings Base32 usando o alfabeto RFC 4648. Útil para segredos TOTP, tokens sem distinção de maiúsculas e identificadores digitados por humanos.
Codificador de Cifra de César
Criptografe e descriptografe texto usando a cifra de César. Qualquer deslocamento de 1-25, suporta ROT13 como um caso especial, preserva pontuação e maiúsculas/minúsculas.
Codificador e Decodificador Base58
Codifique texto UTF-8 ou bytes hexadecimais e decodifique Base58 com segurança usando o alfabeto Bitcoin, Ripple ou Flickr.
Codificador e Decodificador Base85
Codifique e decodifique Base85 na variante Adobe Ascii85, a usada em arquivos PostScript e PDF. Mais compacto que Base64 para dados binários.
Ferramenta disponível em outros idiomas
- مولّد HMAC [AR]
- HMAC-generator [SV]
- ตัวสร้าง HMAC [TH]
- HMAC 생성기 [KO]
- HMACジェネレーター [JA]
- HMAC Generator [ID]
- HMAC-generator [NL]
- Generator HMAC [PL]
- Générateur HMAC [FR]
- Bộ tạo HMAC [VI]
- HMAC-Generator [DE]
- Generador de HMAC [ES]
- HMAC 生成器 [ZH]
- HMAC Generator [EN]
- Generatore HMAC [IT]
- Генератор HMAC [RU]
- HMAC Jeneratörü [TR]