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
- Escolha Texto ou Arquivo como entrada.
- Digite um texto ou solte um arquivo. Os arquivos são lidos localmente e nunca enviados.
- Veja MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de uma vez, em hex ou Base64.
- 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