O que é HMAC?

HMAC (Hash-based Message Authentication Code) é uma técnica criptográfica que combina uma chave secreta com uma função de hash para produzir um código de autenticação único. Diferentemente da simples função de hash, o HMAC garante tanto a integridade dos dados quanto a autenticidade—verificando se uma mensagem não foi adulterada e confirmando a identidade do remetente.

O HMAC funciona processando a mensagem através de uma função de hash (como SHA-256) duas vezes, misturada com a chave secreta de uma maneira específica. Essa abordagem de hash duplo o torna resistente a ataques de extensão de comprimento que afetam funções de hash simples.

Como funciona o HMAC?

O algoritmo HMAC segue estas etapas:

  1. Preparação da chave: Se a chave secreta for mais longa que o tamanho do bloco de hash, ela é primeiro transformada em hash. Se for mais curta, é preenchida com zeros.
  2. Hash interno: A chave é combinada com XOR com uma constante de preenchimento interno (ipad), depois concatenada com a mensagem e transformada em hash.
  3. Hash externo: A chave é combinada com XOR com uma constante de preenchimento externo (opad), depois concatenada com o resultado do hash interno e transformada em hash novamente.

A fórmula é: HMAC(K, m) = H((K ⊕ opad) || H((K ⊕ ipad) || m))

Esta construção garante que, mesmo se um invasor conhecer o hash de uma mensagem, não poderá forjar um HMAC válido sem conhecer a chave secreta.

Por que usar HMAC em vez de hash comum?

Recurso Hash Comum HMAC
Integridade de dados
Autenticação
Requer chave secreta
Proteção contra extensão de comprimento
Adequado para autenticação de API

Hashes comuns (MD5, SHA-256) apenas verificam se os dados não foram alterados. O HMAC, adicionalmente, comprova que a mensagem veio de alguém que conhece a chave secreta, tornando-o essencial para comunicações seguras.

Compreendendo algoritmos de hash

Algoritmo Tamanho de Saída Nível de Segurança Desempenho Recomendação
SHA-1 160 bits (40 caracteres hex) Fraco Mais rápido Apenas sistemas legados
SHA-256 256 bits (64 caracteres hex) Forte Rápido Padrão recomendado
SHA-384 384 bits (96 caracteres hex) Muito Forte Moderado Necessidades de alta segurança
SHA-512 512 bits (128 caracteres hex) Muito Forte Moderado Segurança máxima

SHA-256 oferece o melhor equilíbrio entre segurança e desempenho para a maioria das aplicações. SHA-1 é incluído para compatibilidade com sistemas legados, mas deve ser evitado em novas implementações devido a vulnerabilidades conhecidas.

Comparação de formato de saída

Hexadecimal: Usa caracteres 0-9 e a-f. Produz uma string mais longa, mas é mais fácil de ler e depurar. Comum em APIs e registros.

Base64: Usa caracteres A-Z, a-z, 0-9, +, e /. Produz uma string mais curta (aproximadamente 33% mais curta que hex). Comum em tokens JWT e transmissão compacta de dados.

Exemplo para o mesmo HMAC:

  • Hex: 5d5d139563c95b5967b9bd9a8c9b8c8d8e8f9a9b9c9d9e9f0a0b0c0d0e0f1011
  • Base64: XV0TlWPJW1lnub2ajJuMjY6Pmpm9nZ6fCgsMDQ4PEQ==

Descrição da ferramenta

Este Gerador de HMAC cria códigos de autenticação criptográfica usando a Web Crypto API para computação segura e local. Insira sua mensagem e chave secreta para gerar instantaneamente assinaturas HMAC com sua escolha de algoritmo de hash (SHA-1, SHA-256, SHA-384 ou SHA-512) e formato de saída (hexadecimal ou base64).

Todo o processamento acontece inteiramente no seu navegador—suas chaves secretas e mensagens nunca são transmitidas para qualquer servidor, garantindo total privacidade e segurança.

[Restante do documento segue o mesmo padrão de tradução]