Como calcular o hash de um texto

Seis resumos e os mesmos seis com chave: MD5, SHA-1, SHA-224, SHA-256, SHA-384 e SHA-512, cada um também como HMAC. Todos os valores foram conferidos contra uma implementação independente — 36 resumos por idioma, 12 algoritmos sobre três entradas, iguais até o último caractere hexadecimal.

O resultado é hexadecimal em minúsculas e nada mais: 32 caracteres no MD5, 40 no SHA-1, 56 no SHA-224, 64 no SHA-256, 96 no SHA-384 e 128 no SHA-512. O cálculo roda na página, então o texto não sai do navegador e a ferramenta funciona sem conexão depois de carregada.

  1. Cole ou digite o texto na caixa. Ele é calculado como UTF-8 exatamente como está escrito: espaços e quebras de linha contam, e uma quebra no final gera outro resumo.
  2. Clique em um dos seis botões verdes para um resumo simples. O resultado aparece abaixo como uma string hexadecimal pura, sem nome de algoritmo e sem separadores.
  3. Clique em um botão azul de HMAC e um campo de chave aparece acima dos botões. Digite a chave e clique no mesmo botão outra vez — o cálculo só é refeito quando um botão é clicado.
  4. Copiar resultado coloca a string no clipboard e Limpar esvazia a caixa e o resultado.

Algoritmos, saída e o campo de chave

O que cada algoritmo produz

MD5 e SHA-1 existem para somas de verificação e para sistemas que ainda os exigem; SHA-256 e SHA-512 são os indicados quando o resumo vai para algum lugar novo. SHA-224 e SHA-384 são as variantes truncadas desses dois e estão aqui porque algumas bibliotecas e ferramentas de certificado os citam pelo nome.

Os doze são de mão única — a página não tem função inversa — e o resumo de um caractere tem o mesmo tamanho do de um megabyte. O texto "abc" dá 900150983cd24fb0d6963f7d28e17f72 no MD5 e ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad no SHA-256, o mesmo que uma implementação independente devolve.

O campo de chave e o HMAC

O HMAC mistura uma chave secreta ao cálculo, então o mesmo texto dá um resumo diferente para cada chave. O campo fica oculto até um botão de HMAC ser clicado e volta a se ocultar assim que um botão verde é clicado: um resumo simples nunca usa a chave, esteja o que estiver naquele campo.

Chaves mais longas que o bloco da função são calculadas antes, como exige a RFC 2104, e uma chave vazia é aceita — a página devolve o resumo do texto com chave vazia em vez de recusar. SHA-224 e SHA-384 truncam a saída, que é justamente onde os auxiliares de HMAC em JavaScript costumam errar; aqui os dois foram conferidos contra uma implementação independente e batem.

O que a saída é, e o que não é

A caixa de resultado traz a string hexadecimal pura: sem prefixo, sem separador, sem nome de algoritmo e sem quebra de linha acrescentada. Isso entra direto num arquivo de somas ou numa linha de comando, e também significa que juntar o resumo a um nome de arquivo é um passo manual.

Isto é uma calculadora de hash, não um esquema de armazenamento de senhas. Ela aplica a função escolhida uma única vez, sem salt e sem número de iterações, e nada aqui guarda ou compara valores. Para senhas use bcrypt, scrypt ou Argon2 em vez de um resumo SHA-256 puro.

Onde roda, e um limite

As bibliotecas vêm do site e o cálculo acontece na página: depois de carregar, calcular hash não gerou requisição alguma e o texto nunca é enviado. Uma entrada de 4,8 MB foi calculada com SHA-256 em cerca de 0,6 segundo, e uma de 1 MB em cerca de 0,2 segundo.

A entrada é uma caixa de texto, então a ferramenta calcula texto como UTF-8 e arquivos binários ficam fora do escopo — os bytes precisariam ser codificados antes. Para arquivos, compare o resumo que o seu sistema gera com sha256sum ou certutil, que leem bytes diretamente.

Ferramentas recentes: