Gerador de hash
Digite um texto e os hashes são calculados com quatro algoritmos ao mesmo tempo.
0 caracteres · 0 bytes
Hashes
- SHA-1160 bits
Digite algo no campo acima.
- SHA-256256 bits
Digite algo no campo acima.
- SHA-384384 bits
Digite algo no campo acima.
- SHA-512512 bits
Digite algo no campo acima.
O texto nunca sai do seu navegador. O hash usa a função criptográfica do próprio navegador.
Como funciona
Um hash criptográfico transforma um texto de qualquer tamanho em um número fixo de caracteres. O mesmo texto sempre dá o mesmo hash, e a menor mudança dá um completamente diferente.
A função só funciona em um sentido. Não há como calcular o texto de volta a partir do hash, e esse é justamente o objetivo.
Hashes são usados para comparar arquivos, detectar que algo mudou e como peça de assinaturas e certificados.
O SHA-1 não é mais considerado seguro. Desde 2017 existem formas práticas de construir duas entradas diferentes com o mesmo hash SHA-1, então use-o só para comparar com sistemas antigos.
Senhas não devem ser guardadas com essas funções. Elas são feitas para ser rápidas, o que as torna fáceis de adivinhar por força bruta. Senhas pedem funções propositalmente lentas, como Argon2id, scrypt e PBKDF2. A OWASP só recomenda bcrypt para sistemas antigos em que nem Argon2id nem scrypt estão disponíveis.
O texto é codificado em UTF-8 antes do hash, então caracteres acentuados dão aqui o mesmo hash que em qualquer outra ferramenta correta.
Como a ferramenta funciona
O texto é transformado em UTF-8 e passado para crypto.subtle.digest, do navegador, que calcula SHA-1, SHA-256, SHA-384 e SHA-512 de uma vez. Os hashes são escritos em hexadecimal minúsculo, dois caracteres por byte: 40 caracteres para o SHA-1, 64 para o SHA-256, 96 para o SHA-384 e 128 para o SHA-512. Eles são recalculados a cada caractere que você digita.
Os mesmos bytes sempre dão o mesmo hash em qualquer ferramenta correta, mas o mesmo texto pode virar bytes diferentes. Em UTF-8, o ç ocupa dois bytes, C3 A7, mas na antiga codificação Latin-1 ocupa um só, E7. Uma palavra como ação tem, portanto, um hash aqui e outro num programa que trabalha em Latin-1.
Exemplo
abc dá o hash SHA-256 ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad, o mesmo valor que o NIST traz no seu exemplo de teste do algoritmo. Se abc vier seguido de uma quebra de linha, como acrescenta o comando echo, o hash passa a ser edeaaff3f1774ad2888673770c6d64097e391bc362d7d6fb34982ddf0efd18cb. A quebra de linha não aparece no texto, mas o hash é outro.
Casos-limite
A ferramenta calcula o hash de textos, não de arquivos. A soma de verificação de um arquivo baixado é calculada sobre os bytes do arquivo, por exemplo com certutil -hashfile no Windows ou sha256sum no Linux. Colar o conteúdo do arquivo só dá o mesmo hash se o texto for idêntico byte a byte.
Os finais de linha são o motivo mais comum de hashes que não batem. O HTML Standard exige que uma caixa de texto converta todo final de linha em um LF simples, então o texto de um arquivo com finais de linha do Windows, CR LF, tem aqui um hash diferente do que o certutil calcula. Espaços no fim da linha e uma quebra de linha final também contam.
Em 15 de dezembro de 2022, o NIST anunciou que o SHA-1 deve ser abandonado até 31 de dezembro de 2030 e substituído pelo SHA-2 ou pelo SHA-3. Das funções daqui, SHA-256, SHA-384 e SHA-512 pertencem ao SHA-2.