Gerador de hash

Gere hashes SHA-1, SHA-256, SHA-384 ou SHA-512 a partir de texto — calculados localmente usando a API Web Crypto.

Esta página foi traduzida do inglês com a ajuda de IA e conferida com o original. Ler a versão em inglês

  • Grátis — Sem necessidade de cadastro
  • Instantâneo — Os resultados são atualizados enquanto você digita
  • Privado — Processado no seu navegador

Uma função hash criptográfica condensa qualquer entrada em uma impressão digital de tamanho fixo: altere um único byte e a impressão digital muda por completo, e não existe forma prática de executar a função ao contrário. Esta ferramenta calcula os três digests da família SHA-2 suportados pelos navegadores, além do SHA-1 por compatibilidade, usando a Web Crypto API em vez de uma reimplementação em JavaScript.

Como funciona

Digite ou cole um texto, escolha um algoritmo e o digest aparece em hexadecimal minúsculo. O texto é convertido em bytes UTF-8 com TextEncoder e repassado a crypto.subtle.digest, a implementação nativa do navegador. O hash é recalculado a cada tecla digitada e nada é enviado a lugar nenhum.

O tamanho da saída é definido pelo algoritmo: o SHA-1 gera 40 caracteres hexadecimais (160 bits), o SHA-256 gera 64, o SHA-384 gera 96 e o SHA-512 gera 128. Se o sistema que vai receber o valor espera Base64 em vez de hexadecimal, passe o valor hexadecimal por um conversor ou calcule o digest com uma ferramenta de linha de comando que ofereça essa saída.

Dois detalhes costumam confundir quando um hash não bate com o calculado em outro lugar. Primeiro, a entrada é processada exatamente como foi digitada, então uma quebra de linha no final ou um espaço perdido mudam o resultado; a maioria das ferramentas de shell acrescenta uma quebra de linha, a menos que você diga o contrário. Segundo, os bytes são UTF-8. Um arquivo salvo em UTF-16 ou Latin-1 gera um hash diferente, mesmo sendo exibido de forma idêntica.

A Web Crypto API só fica disponível em origens seguras, e é por isso que a ferramenta exige HTTPS. O MD5 não está presente porque os navegadores não o implementam e porque ele não serve para uso em segurança há muitos anos.

Reproduzindo o resultado em outro lugar

Os mesmos digests no Linux e no macOS, com printf em vez de echo para que nenhuma quebra de linha seja adicionada:

printf '%s' 'hello world' | sha256sum
printf '%s' 'hello world' | openssl dgst -sha512

O sha256sum imprime o valor hexadecimal seguido de um hífen quando lê da entrada padrão; o openssl dgst coloca o nome do algoritmo na frente. Os dois devem bater com a ferramenta caractere por caractere.

Para que serve um hash

Hashes verificam integridade. Uma página de download publica o SHA-256 de um instalador para que você confirme que o arquivo recebido é o mesmo que foi gerado. O Git identifica commits calculando o hash do conteúdo deles. Caches endereçados por conteúdo usam o hash de um arquivo como chave, de modo que arquivos idênticos são armazenados uma única vez. Um digest dentro de uma mensagem assinada comprova que o corpo não foi alterado depois da assinatura.

Hash não é criptografia. Não há chave nem nada para descriptografar; qualquer pessoa com a mesma entrada obtém a mesma saída. Publicar o SHA-256 de um segredo não o protege se ele puder ser adivinhado, porque um atacante pode calcular o hash de palpites até encontrar um que coincida.

Por isso, um SHA-256 puro é a ferramenta errada para armazenar senhas. O hash de senhas exige uma função propositalmente lenta e com salt, como Argon2id, scrypt ou bcrypt, para que testar milhões de candidatas por segundo se torne inviável. Use este gerador para conferir checksums de arquivos e depurar integrações, não para construir um sistema de login.

Escolhendo um algoritmo

O SHA-256 é o padrão sensato e o que a maioria dos protocolos, certificados e arquivos de checksum usa hoje. O SHA-512 é um pouco mais rápido em hardware de 64 bits e gera um digest mais longo; o SHA-384 é uma variante truncada que evita as preocupações com extensão de comprimento. Colisões de SHA-1 já foram demonstradas na prática, então ele só deve ser usado quando um sistema mais antigo exigir, como nos IDs de objetos legados do Git.

Se você precisa autenticar uma mensagem com um segredo compartilhado, e não apenas gerar sua impressão digital, o que você quer é um HMAC, que combina um hash com uma chave. Essa é outra operação da Web Crypto API e não é oferecida aqui.

Saiba mais

Hash, criptografia e assinatura são três primitivas distintas que costumam ser confundidas; os fundamentos de segurança da informação explicam o que cada uma garante e onde cada uma se encaixa. Para ver uma assinatura baseada em hash em ação, decodifique um token com o decodificador de JWT e leia protegendo APIs REST com JWT, que mostra como as assinaturas HS256 e RS256 desses tokens são geradas e verificadas.

Perguntas frequentes

Qual algoritmo de hash devo usar?
SHA-256 é uma boa opção padrão para uso geral. O SHA-1 é considerado criptograficamente quebrado e não deve ser usado para fins de segurança, embora ainda seja às vezes necessário para compatibilidade com sistemas antigos.
Por que o MD5 não é compatível?
O MD5 não está disponível na API Web Crypto integrada do navegador e também é criptograficamente quebrado — recomenda-se usar SHA-256 ou um algoritmo mais forte em seu lugar.
Meu texto é enviado a algum lugar?
Não. O hash é gerado totalmente no seu navegador usando crypto.subtle.digest.