Gerador de hash

Hashes MD5, SHA-1 e SHA-2 e HMACs de textos ou arquivos.

Sobre esta ferramenta

Calcule MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de qualquer texto ou arquivo, ou um HMAC com uma chave secreta. Os arquivos são lidos localmente e nunca enviados, então também serve para verificar checksums de downloads.

Como usar

  1. Escolha Texto ou Arquivo como entrada.
  2. Digite um texto ou solte um arquivo. Os arquivos são lidos localmente e nunca enviados.
  3. Veja MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de uma vez, em hex ou Base64.
  4. Para mensagens assinadas, ative HMAC e digite a chave secreta.

Perguntas

Como verifico um arquivo baixado?
Escolha Arquivo, solte o download e compare o valor SHA-256 com o checksum publicado pelo projeto. Se um único caractere for diferente, o arquivo não é o mesmo.
Posso usar MD5 ou SHA-1 para senhas?
Não. Eles são rápidos demais e têm fraquezas conhecidas. Armazene senhas com um hash de senha lento, como Argon2, bcrypt ou scrypt.
O que é um HMAC?
Um hash combinado com uma chave secreta. Ele prova que a mensagem veio de alguém que conhece a chave e não foi alterada. Webhooks de serviços como Stripe e GitHub são assinados assim.
Por que o meu hash é diferente do de outra ferramenta?
Geralmente por causa de diferenças invisíveis na entrada: uma quebra de linha no final, finais de linha do Windows ou outra codificação de texto. Aqui, o texto sempre tem o hash calculado em UTF-8 exatamente como foi digitado.
Dá para descriptografar ou reverter um hash?
Não. Hash não é criptografia, e não existe chave para desfazê-lo. Os sites que oferecem “descriptografar MD5” procuram o valor em tabelas enormes de hashes de strings comuns. É também por isso que hashes sem salt de entradas curtas, como senhas ou números de telefone, não tornam os dados anônimos.
Como verificar a assinatura HMAC de um webhook?
Ative o HMAC, digite o segredo de assinatura e cole o corpo bruto da requisição exatamente como foi recebido, depois compare o valor hex do HMAC-SHA256 com o cabeçalho da assinatura. O GitHub o envia em X-Hub-Signature-256 depois de um prefixo sha256=. Um JSON reformatado gera um resultado diferente, e alguns provedores também assinam um timestamp, então confira a documentação deles.
Como saber qual algoritmo gerou um hash?
Olhe o tamanho em hex. O MD5 tem 32 caracteres, o SHA-1 tem 40, o SHA-256 tem 64, o SHA-384 tem 96 e o SHA-512 tem 128. O tamanho não prova o algoritmo, já que outros hashes têm esses mesmos tamanhos, mas restringe as opções rapidamente. Calcule aqui o hash de uma entrada conhecida para confirmar.

O que é uma função de hash?

Uma função de hash criptográfico transforma uma entrada de qualquer tamanho em um digest de tamanho fixo. O SHA-256 sempre produz 256 bits, exibidos como 64 caracteres hexadecimais, seja o hash de uma palavra ou de um arquivo de 4 GB. A mesma entrada sempre gera o mesmo hash, e mudar um único bit muda cerca de metade da saída. Não dá para reverter um hash e recuperar a entrada; só dá para calcular o hash de palpites e comparar os resultados.

Um bom hash também é resistente a colisões: encontrar duas entradas com o mesmo digest deveria ser praticamente impossível. O MD5 e o SHA-1 perderam essa propriedade. Uma colisão real de SHA-1 foi publicada em 2017 (SHAttered), e colisões de MD5 levam segundos em um notebook. Os dois ainda servem para detectar corrupção acidental, mas use SHA-256 ou SHA-512 para assinaturas, verificações contra adulteração e qualquer outro caso em que um atacante possa estar envolvido.

Como obter o mesmo hash SHA-256 na linha de comando

Para comparar com um valor do terminal, calcule o hash exatamente dos mesmos bytes. No Linux rode sha256sum file.iso, no macOS shasum -a 256 file.iso, e no Windows PowerShell Get-FileHash file.iso, que usa SHA-256 por padrão. Para MD5, os comandos são md5sum, md5 e Get-FileHash -Algorithm MD5. O PowerShell imprime hex em maiúsculas, então ative Maiúsculas aqui quando quiser que os dois valores fiquem idênticos.

Para texto, lembre que o echo adiciona uma quebra de linha, então echo hello | sha256sum calcula o hash de seis bytes, não de cinco. Use printf hello | sha256sum ou echo -n para bater com o que você digitou aqui; a contagem de bytes acima da caixa de texto confirma a entrada exata. Alguns sistemas, como os atributos de Subresource Integrity, esperam o digest em Base64 em vez de hex. Mude a codificação da saída para obtê-lo sem converter à mão.

MD5, SHA-1, SHA-256 ou SHA-512: qual hash usar

Para projetos novos, o SHA-256 é o padrão: rápido, suportado em todo lugar e sem ataques práticos conhecidos. O SHA-512 gera um digest mais longo e costuma ser mais rápido que o SHA-256 em CPUs de 64 bits, o que ajuda com arquivos grandes. O SHA-384 é um SHA-512 truncado com valores iniciais diferentes, comum em TLS e em Subresource Integrity. Deixe o MD5 e o SHA-1 para sistemas legados e checksums sem fins de segurança, como conferir um arquivo com um MD5 antigo publicado.

Para autenticar uma mensagem, como o payload de um webhook, use um HMAC em vez de calcular o hash do segredo junto com a mensagem. Um SHA-256 simples de segredo mais mensagem fica exposto a ataques de length extension, que o HMAC foi criado para evitar. Senhas precisam de um algoritmo lento e com salt, como Argon2id ou bcrypt, em vez de qualquer um destes. Para IDs aleatórios ou tokens secretos, use o Gerador de UUID ou o Gerador de senhas em vez de um hash.

Algo não está funcionando ou um resultado parece errado? Relatar um problema com esta ferramenta