Gerador de hash

Roda no seu navegador; nada é enviado

Hashes e HMACs MD5, SHA-1, SHA-256, SHA-384 e SHA-512 de um texto ou arquivo, com verificação contra um hash que você já tem.

Input

Hashes

Nothing to hash yet

Type or paste text on the left, or open a file to hash its bytes.
Ready
Hex

O que é um hash?

Uma função de hash transforma qualquer entrada numa impressão digital de tamanho fixo. A mesma entrada sempre dá o mesmo hash, a mudança de um único byte dá um hash completamente diferente, e não dá para voltar do hash para a entrada. MD5 gera 128 bits, SHA-1 160, e SHA-256, SHA-384 e SHA-512 a quantidade de bits do nome, mostrados aqui em hexadecimal ou Base64.

Desenvolvedores usam hashes para conferir se os dados não mudaram: uma página de download publica um checksum SHA-256 para você confirmar que o arquivo recebido é o que foi publicado. Um HMAC é um hash misturado com uma chave secreta. Provedores de webhook e muitas APIs assinam cada requisição com HMAC-SHA256, e quem recebe calcula o mesmo HMAC sobre o body bruto para provar que a requisição é legítima.

MD5 e SHA-1 estão quebrados em termos de segurança: atacantes conseguem criar duas entradas diferentes com o mesmo hash. Eles ainda servem para detectar mudanças acidentais, mas use SHA-256 ou algo mais forte para tudo o que alguém possa tentar falsificar. Um hash simples também é a forma errada de guardar senhas; para isso é preciso um algoritmo lento e com salt, como Argon2, scrypt ou bcrypt.

Como usar esta ferramenta

  1. 1Digite ou cole texto no painel Input. Ele é processado como UTF-8, e os hashes atualizam enquanto você digita.
  2. 2Para gerar o hash de um arquivo, escolha Hash a file (Ctrl+O) ou arraste o arquivo para a entrada. Os bytes do arquivo são processados exatamente como estão no disco, no seu navegador.
  3. 3Escolha a saída: hexadecimal, hexadecimal em maiúsculas ou Base64. Copie um hash com o botão da linha dele, ou todos com Copy all.
  4. 4Para um HMAC, mude o modo para HMAC e digite a chave, como texto ou como bytes em hexadecimal.
  5. 5Para conferir um hash que você recebeu, cole-o em Compare. A ferramenta diz com qual algoritmo ele bate, seja hexadecimal, Base64 ou uma linha de um arquivo de checksum.

Solução de problemas

Meu hash não bate com o da linha de comando
Hashes cobrem bytes exatos. O echo adiciona uma quebra de linha, então use echo -n ou printf. Um espaço no final ou uma codificação diferente também mudam o resultado.
Texto com fim de linha do Windows gera outro hash
Os navegadores transformam em \n os fins de linha do texto de um editor, então texto colado é processado com fim de linha LF. Para gerar o hash dos bytes exatos de um arquivo com fim de linha CRLF, abra o arquivo em vez de colar.
A assinatura do meu webhook não bate
Calcule o HMAC sobre o body bruto da requisição exatamente como chegou, antes de qualquer parse ou reformatação do JSON, com a mesma chave e o mesmo algoritmo. Alguns provedores mandam a assinatura em Base64 e outros em hexadecimal; Compare aceita os dois.
A chave não é hexadecimal válido
No modo hexadecimal, a chave precisa ser pares de dígitos 0–9 e a–f. Mude o formato da chave para texto para usar os caracteres dela como UTF-8.

Perguntas frequentes

Meu texto ou arquivo é enviado para um servidor?

Não. SHA-1 e os hashes SHA-2 são calculados pela API Web Crypto do seu navegador, e o MD5 por um código da própria página. Os arquivos são lidos no navegador, até 200 MB, e nada sai do seu dispositivo.

Dá para reverter ou descriptografar um hash?

Não. O hash é de mão única. Sites que dizem reverter MD5 procuram o hash em tabelas de hashes de palavras e senhas comuns, o que só funciona com entradas fracas.

Qual algoritmo devo usar?

SHA-256 para checksums, assinaturas e qualquer coisa ligada a segurança. SHA-384 e SHA-512 também são seguros. Use MD5 ou SHA-1 só onde um sistema existente exigir.