Gerador de Hash
Gere digests MD5, SHA-1, SHA-224, SHA-256, SHA-384 e SHA-512 de qualquer texto de uma vez. Funciona totalmente no seu navegador: nada é enviado a nenhum servidor.
Os seis digests aparecem aqui conforme você digita
O que é uma função de hash?
Uma função de hash transforma uma entrada de qualquer tamanho em uma impressão digital de tamanho fixo. A mesma entrada sempre produz o mesmo digest, mudar um único caractere produz um completamente diferente, e não há como rodar a função ao contrário para recuperar o texto original. Esta ferramenta calcula os seis digests de uma vez a partir dos bytes UTF-8 do que você digita, para você comparar formatos lado a lado. SHA-1, SHA-256, SHA-384 e SHA-512 são calculados pela API de criptografia nativa do seu navegador; MD5 e SHA-224 são calculados em JavaScript aqui, porque o padrão Web Crypto não os inclui. Em qualquer um dos casos, nada sai do seu dispositivo.
Como escolher um algoritmo
MD5 (128 bits)
Quebrado para segurança desde 2004: colisões podem ser produzidas em um notebook em segundos. Continua em todo lugar como checksum sem fins de segurança, como ETag ou como chave de cache, e continua sendo o que muitos sistemas legados e sites de listagem de arquivos publicam. Nunca use para senhas, assinaturas, ou para provar que um arquivo não foi alterado.
SHA-1 (160 bits)
Também está quebrado: uma colisão prática foi demonstrada em 2017 e os navegadores pararam de confiar em certificados SHA-1. O Git ainda o usa para os ids dos seus objetos, e muitas APIs ainda assinam com ele, então você vai continuar encontrando. Trate como o MD5: serve como identificador, não como garantia de segurança.
SHA-224 e SHA-256
Os membros de 32 bits da família SHA-2, e o padrão sensato hoje. SHA-256 é o que certificados TLS, protocolos de blockchain, checksums de pacotes e tokens assinados usam. SHA-224 é o SHA-256 truncado em 224 bits, útil quando um protocolo especifica exatamente esse tamanho.
SHA-384 e SHA-512
Os membros de 64 bits do SHA-2. Não são apenas mais longos: usam um tamanho de palavra interno diferente, o que os torna mais rápidos que o SHA-256 em hardware de 64 bits. O SHA-384 é o SHA-512 truncado, e é o que várias suítes de cifra TLS e algoritmos de JWT especificam.
Exemplos
O mesmo digest calculado nas linguagens que você provavelmente vai usar:
const buf = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(str));
const hex = [...new Uint8Array(buf)].map((b) => b.toString(16).padStart(2, "0")).join("");import hashlib
hashlib.sha256(text.encode("utf-8")).hexdigest()MessageDigest.getInstance("SHA-256")
.digest(text.getBytes(StandardCharsets.UTF_8));import "crypto/sha256"
fmt.Printf("%x", sha256.Sum256([]byte(text)))hash("sha256", $text);printf "%s" "$text" | sha256sum
printf "%s" "$text" | md5sumCasos de uso
Verificar um download
Cole o checksum publicado ao lado de um arquivo e compare com o que você calcula localmente. Se um único caractere diferir, o arquivo que você tem não é o que foi publicado.
Reproduzir uma assinatura ou uma chave de cache
Quando uma API rejeita sua requisição ou um cache não encontra a entrada, gerar o hash da string exata que você acha que enviou é a forma mais rápida de descobrir se sua entrada difere da que o outro lado esperava.
Deduplicar registros
Gerar o hash de uma versão normalizada de um registro dá uma chave curta e de tamanho fixo para detectar duplicados sem comparar campo por campo.
Conferir fixtures e migrações
Muitas ferramentas de migração e sistemas de configuração guardam um checksum de cada arquivo para detectar edições posteriores. Calcular esse digest na mão diz por que uma ferramenta está reportando um arquivo como alterado.