Pular para o conteúdo

Gerar um hash

MD5, SHA-1, SHA-256, SHA-384 e SHA-512, para texto ou para um arquivo de qualquer tamanho. Útil para verificar se um download corresponde ao checksum publicado. Nada fica armazenado.

  • Nunca armazenado
  • Sem fila, sem espera
  • Sem cadastro, sem marca d'água

O texto é processado como UTF-8. Para verificar um download, solte o arquivo.

Como funciona

1

Cole o texto ou solte um arquivo

O texto é processado como UTF-8. Um arquivo é lido e processado aqui; ele nunca fica armazenado.

2

Veja todos os hashes de uma vez

Os cinco algoritmos são calculados juntos, então você não precisa saber de antemão qual deles precisa.

3

Compare com um valor esperado

Cole o checksum que você recebeu e a comparação é feita para você — comparar caractere por caractere a olho é onde os erros acontecem.

O que um hash prova, e o que não prova

Um hash é uma impressão digital de tamanho fixo de qualquer quantidade de dados, e tem duas propriedades que vale descrever com precisão. Ele é de mão única — não existe operação que transforme um hash de volta nos dados, porque quase toda a informação se perdeu. E é sensível: mude um bit da entrada e cerca de metade dos bits da saída muda. É isso que o torna útil para confirmar que um arquivo foi baixado íntegro, ou que dois arquivos são iguais sem compará-los byte a byte.

MD5 e SHA-1 estão quebrados e estão aqui mesmo assim, por um motivo. Os dois têm ataques de colisão práticos — o MD5 desde 2004, o SHA-1 demonstrado com um par real de PDFs em 2017 — o que significa que alguém consegue construir dois arquivos diferentes com o mesmo hash. Então nenhum dos dois prova nada diante de um adversário. Ambos continuam ótimos para detectar corrupção acidental, e muito software real ainda publica checksums MD5, então conferir um deles em um download é uma necessidade legítima. Use SHA-256 sempre que alguém possa estar tentando enganar você.

Nunca gere o hash de uma senha com nenhum destes. Esta é a informação mais importante da página. Hashes são feitos para ser rápidos, e rápido é exatamente o errado para senhas: uma placa de vídeo moderna calcula bilhões de hashes SHA-256 por segundo, então um banco de dados roubado com senhas em hash é quebrado em horas. O armazenamento de senhas precisa de uma função propositalmente lenta com salt por usuário — argon2, bcrypt ou scrypt — feitas para gastar tempo e memória de propósito. Um SHA-256 simples de uma senha é uma vulnerabilidade, não uma proteção, por mais que pareça em uma coluna de banco de dados.

Comparar um hash que você calculou com um publicado na mesma página de onde você baixou prova menos do que parece: quem conseguisse trocar o arquivo conseguiria trocar o número ao lado dele. Um checksum vale mais quando vem de outro lugar — uma release assinada, um canal separado, um valor que você mesmo anotou antes.

Quando você precisa de outra coisa

Na linha de comando, isso é uma palavra: shasum -a 256 file no macOS e no Linux, certutil -hashfile file SHA256 no Windows, e md5sum ou sha1sum quando o checksum publicado é um mais antigo. Eles processam o arquivo em fluxo em vez de carregá-lo, então não há limite de tamanho — e essa é a diferença real para qualquer coisa acima de algumas centenas de megabytes, em que uma página que guarda o arquivo inteiro na memória simplesmente falha.

Para verificar se uma release é autêntica, e não apenas íntegra, um hash sozinho é a ferramenta errada. Assinaturas GPG — gpg --verify file.sig file — provam quem produziu o arquivo, que é a pergunta que um checksum não consegue responder. A maioria dos projetos sérios publica os dois, e a assinatura é o que importa.

Perguntas frequentes

Meu arquivo fica armazenado em algum lugar?

Não. O hash do arquivo é calculado com a mesma criptografia integrada que cuida do HTTPS. Nada fica armazenado, então não há limite de tamanho nem espera por conexão.

Existe limite de tamanho?

A memória disponível, e não um limite fixo de tamanho. A criptografia do navegador não tem como calcular o hash de um arquivo em partes — ela precisa do arquivo inteiro na memória de uma vez — então um arquivo muito grande (uma imagem de DVD, por exemplo) pode falhar em uma máquina que não consiga guardá-lo. Arquivos de até algumas centenas de megabytes funcionam bem em um computador comum. Se um arquivo grande falhar, esse é o limite que você atingiu, e a página avisa em vez de travar.

Qual hash devo usar?

SHA-256 para qualquer coisa nova. É o padrão moderno, é o que usam checksums de software, digests de contêineres e sistemas de blockchain, e não tem fraquezas conhecidas. Use MD5 ou SHA-1 apenas quando algo exigir — conferir um checksum antigo publicado, um sistema legado, ou o Git, que identifica objetos por SHA-1. Use SHA-512 quando quiser especificamente um digest mais longo; em máquinas de 64 bits ele costuma ser mais rápido que o SHA-256, não mais lento.

Posso usar isto para gerar o hash de uma senha?

Pode, mas não deve armazenar o resultado. Esse é o erro mais comum nessa área, então vale ser direto: MD5, SHA-1 e SHA-256 são todos errados para senhas, e o fato de o SHA-256 ser criptograficamente forte não ajuda. O problema é que essas funções são RÁPIDAS por definição — uma placa de vídeo moderna calcula bilhões de hashes SHA-256 por segundo, então um banco de dados roubado com hashes SHA-256 de senhas é quebrado em velocidade enorme. Senhas precisam de uma função propositalmente lenta e com salt, feita para isso: bcrypt, scrypt ou Argon2. Todo framework sério já traz uma.

Por que o MD5 está marcado como quebrado?

Porque hoje qualquer pessoa consegue construir dois arquivos diferentes com o mesmo hash MD5, em hardware comum, em segundos. Isso é verdade desde 2004 e já foi demonstrado com consequências reais — dois PDFs mostrando contratos diferentes, dois executáveis em que um é malware. Então o MD5 não prova que um arquivo é o que você esperava; uma falsificação deliberada pode ter o mesmo hash. Ele ainda é perfeitamente razoável para detectar corrupção acidental, como um download com defeito ou uma cópia truncada, que é para o que a maioria dos checksums MD5 publicados serve. Ele nunca deve ser usado para segurança.

Por que o SHA-1 está marcado como quebrado?

Pelo mesmo motivo, mais recentemente. Em 2017, o Google e o CWI produziram dois PDFs diferentes com o mesmo hash SHA-1, e em 2020 o ataque já estava barato o suficiente para falsificar assinaturas. Os navegadores deixaram de aceitar certificados SHA-1 há anos, e o Git está migrando para outro algoritmo. Se você está escolhendo um algoritmo hoje, escolha SHA-256.

Como verifico um download?

Solte o arquivo baixado e cole na caixa de comparação o checksum do site de onde você o baixou. Se corresponderem, o arquivo chegou íntegro e é o arquivo que foi publicado. Se não, exclua-o e baixe de novo. Dois cuidados: pegue o checksum da fonte oficial, e não de onde quer que você tenha baixado o arquivo, e lembre que um checksum só prova que o arquivo corresponde ao que aquela página publicou — se a própria página foi comprometida, os dois vão corresponder.

Os hashes são calculados corretamente?

SHA-1, SHA-256, SHA-384 e SHA-512 vêm da implementação Web Crypto do próprio navegador, o mesmo código que cuida do HTTPS. O MD5 não está na Web Crypto — de propósito, porque está quebrado — então ele é implementado aqui diretamente a partir da RFC 1321 e conferido com os vetores de teste publicados nesse mesmo documento.

Bom saber: MD5 e SHA-1 estão aqui porque arquivos reais e sistemas antigos ainda os usam, não porque sejam seguros — os dois estão quebrados para qualquer uso de segurança e só servem como checksums. A Web Crypto não tem digest incremental, então o arquivo inteiro fica na memória: arquivos muito grandes vão falhar em vez de serem processados em fluxo.

Coloque esta ferramenta no seu site

Grátis para qualquer blog, página de turma ou artigo de ajuda. Cole um único trecho de código e seus visitantes podem usá-la direto na sua página.