Hashes/Cripto

HMAC Generator

Calcule o HMAC (Hash-based Message Authentication Code) de um texto ou arquivo com uma chave secreta — com oito algoritmos de uma vez: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160.

HMAC (Hash-based Message Authentication Code) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.

How to use it

Common uses

Things to keep in mind

HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.

A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.

Artigo sobre esta ferramenta: HMAC: em que um hash com chave difere de um hash comum

Perguntas frequentes

Qual é a diferença entre HMAC e um hash comum?

Um hash comum (como SHA-256 sozinho) só gera uma impressão digital dos dados, sem chave. O HMAC combina o hash com uma chave secreta, permitindo autenticar a origem da mensagem — só quem conhece a chave consegue gerar ou validar o mesmo HMAC.

Que tamanho de chave e algoritmo devo escolher?

Prefira SHA-256 ou superior para uso moderno; MD5 e SHA-1 permanecem aqui por compatibilidade, mas são desaconselhados para novos sistemas. A chave deve ser aleatória e ter comprimento igual ou maior que o tamanho de saída do hash escolhido.

Por que alguns algoritmos ficam indisponíveis em HTTP simples?

Os algoritmos HMAC-SHA usam a Web Crypto API do navegador, que só funciona em contextos seguros (HTTPS ou localhost). Os demais algoritmos, implementados sem essa API, continuam funcionando normalmente.

Por que não posso comparar um HMAC usando o operador de igualdade comum?

A comparação comum de strings para na primeira divergência, e o tempo de execução revela ao atacante quantos dos primeiros caracteres ele acertou (timing attack). São necessárias funções de comparação em tempo constante, como o hash_equals no PHP.

Posso usar a mesma chave para várias finalidades diferentes?

Não é recomendado. Se a mesma chave secreta for usada tanto para assinar webhooks quanto para outra finalidade, o comprometimento de um sistema compromete automaticamente o outro — para cada uso específico, vale gerar uma chave separada.

Artigos: Hashes/Cripto

Hash Generator: em que MD5, SHA-1 e SHA-256 diferem entre si

Por que o MD5 ainda é usado para verificar a integridade de arquivos, mas não para senhas.

Checksum Verifier: como verificar que um arquivo não está corrompido

Por que um checksum coincidente confirma a integridade de um arquivo, mas não quem o criou.

Bcrypt: por que as senhas são hasheadas devagar, não rápido

Por que um SHA-256 rápido é uma má escolha para senhas, e um bcrypt lento é a certa.

UUID: como são gerados identificadores que quase nunca se repetem

Por que um UUID v4 pode ser gerado de forma independente em milhões de máquinas sem risco de colisão.

Gerador de senhas: o que realmente torna uma senha forte

Por que uma senha longa feita de palavras de dicionário é mais forte que uma curta com símbolos e números.

AES: como funciona a criptografia simétrica

Por que a mesma chave cifra e decifra os dados no AES, e como isso difere da criptografia assimétrica.

Argon2: por que esse algoritmo venceu a competição de hashing de senhas

Como o Argon2 se defende melhor contra ataques com GPU do que algoritmos de hashing de senhas mais antigos.

Scrypt: por que o algoritmo precisa de tanta memória

Por que o scrypt exige deliberadamente muita memória para dificultar a quebra em dispositivos ASIC.

TOTP: como funcionam os códigos de uso único em apps autenticadores

Por que o código do Google Authenticator funciona sem internet e se sincroniza com o servidor apenas pela hora.

PBKDF2: o padrão mais antigo de alongamento de chave

Por que o número de iterações recomendado para o PBKDF2 cresce a cada ano.

X.509: o que há dentro de um certificado SSL

O que exatamente o navegador verifica no certificado de um site antes de mostrar o cadeado verde.

PGP: como funciona a criptografia de chave pública e privada

Por que se pode compartilhar livremente uma chave pública PGP, mas nunca a privada.