# Gerador de HMAC-SHA256

Crie uma assinatura HMAC-SHA256 a partir de uma mensagem e uma chave secreta. A ferramenta codifica ambas em UTF-8, aplica a construção HMAC da RFC 2104 com SHA-256 e retorna a etiqueta de 256 bits em hexadecimal ou Base64. Desenvolvedores usam a ferramenta para depurar assinaturas de webhook de serviços como Stripe, GitHub ou Slack, assinar solicitações API e comparar os resultados com o próprio código. A chave nunca é retornada nem registrada.

## Perguntas frequentes

### O que é HMAC-SHA256?

HMAC-SHA256 é um código de autenticação de mensagem criado com SHA-256 e uma chave secreta, conforme definido na RFC 2104. Somente quem possui a chave pode calcular a etiqueta correta para uma mensagem. O resultado tem 32 bytes ou 64 caracteres hexadecimais.

### Como verifico uma assinatura de webhook?

Cole o corpo bruto exato da solicitação como mensagem e o segredo de assinatura como chave; em seguida, compare o resultado com o cabeçalho da assinatura. Muitos serviços assinam uma combinação, como o carimbo de data e hora do Stripe, um ponto e o corpo, então monte a mensagem conforme descrito na documentação do serviço. Uma única alteração de byte produz uma etiqueta diferente.

### Existe um vetor de teste conhecido?

O caso de teste 2 da RFC 4231 usa a chave Jefe e a mensagem what do ya want for nothing? e espera 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843. Esta ferramenta retorna exatamente esse valor.

### Como a chave e a mensagem são codificadas?

Ambas são codificadas como texto UTF-8. Se o segredo for fornecido em hexadecimal ou Base64, como acontece em alguns serviços, os bytes serão diferentes do texto exibido, e você precisará decodificar a chave no próprio código. Espaços em branco e quebras de linha contam nos dois campos.

### Minha chave secreta é armazenada?

Não. A chave é usada apenas para calcular a etiqueta durante a solicitação. Ela não é incluída na resposta, registrada nem armazenada.

### A chave pode ser vazia ou muito longa?

O HMAC aceita chaves de qualquer tamanho, inclusive uma chave vazia. Chaves com mais de 64 bytes são primeiro processadas com SHA-256, conforme especificado pela RFC. Para uso real, escolha uma chave aleatória de pelo menos 32 bytes.

### Devo escolher hexadecimal ou Base64?

Use o formato enviado pela outra parte. GitHub e Stripe usam hexadecimal, enquanto Slack prefixa o hexadecimal com v0= e muitos sistemas baseados em AWS e JWT usam Base64. Ambos codificam os mesmos 32 bytes.

### HMAC-SHA256 é igual ao SHA-256 da chave concatenada com a mensagem?

Não. O HMAC calcula o hash da mensagem duas vezes, com chaves preenchidas internas e externas, o que protege contra ataques de extensão de comprimento. Concatenar a chave e a mensagem e calcular o hash uma vez produz um resultado diferente e mais fraco.

### Como devo comparar assinaturas no meu código?

Use uma função de comparação em tempo constante, como crypto.timingSafeEqual em Node.js ou hmac.compare_digest em Python. Uma comparação normal de strings pode revelar informações temporais sobre a etiqueta esperada.

### Qual pode ser o tamanho da mensagem?

A mensagem e a chave podem somar até 5 MiB de texto. Isso cobre cargas úteis típicas de webhook e solicitações API.

Seu anúncio aqui?

[Envie-nos um e-mail](mailto:hi@dennn.is?subject=Publicidade%20em%20OneClick%20Pro)

[Anúncio O conjunto de plugins pronto para agentes para WordPress.](https://sleekwp.com/?ref=oneclickpro)
