Gerador de hash SHA-1

Obtenha o resumo SHA-1 de 160 bits de um texto, de bytes em hex ou de um arquivo enquanto você digita. Compare-o com uma soma de verificação publicada e veja de relance o SHA-256, o SHA-512 e o MD5 da mesma entrada.

Todos os algoritmos

Funciona inteiramente no seu navegador. Nada é enviado.

Como usar

  1. Digite um texto, mude a entrada para Hex para informar bytes ou abra um arquivo.
  2. O SHA-1 já vem selecionado; mude a lista Algoritmo se quiser compará-lo com outra função de hash.
  3. Em Saída como, escolha hex (minúsculas), o formato exibido pelo sha1sum e pelo Git, HEX (maiúsculas) ou Base64.
  4. Cole um SHA-1 esperado no campo Comparar com; a página mostra Confere ou Não confere.

O que é SHA-1?

O SHA-1 (Secure Hash Algorithm 1) foi projetado pela NSA e publicado pelo NIST em 1995 como FIPS 180-1, substituindo o SHA-0, que teve vida curta. Hoje ele é especificado na FIPS 180-4, e a RFC 3174 o descreve com código de exemplo em C. O SHA-1 processa blocos de 512 bits em 80 rodadas e gera um resumo de 160 bits: 40 caracteres hex ou 28 caracteres Base64.

Como qualquer hash, o SHA-1 é unidirecional. Um resumo não pode ser descriptografado, apenas reproduzido calculando o hash de palpites. Foi assim que os hashes de senha SHA-1 sem salt vazados do LinkedIn em 2012 foram quebrados em massa; senhas devem ser armazenadas com Argon2, scrypt, bcrypt ou PBKDF2.

SHAttered: por que o SHA-1 está obsoleto

Em fevereiro de 2017, pesquisadores do CWI Amsterdam e do Google publicaram o SHAttered, a primeira colisão real de SHA-1: dois arquivos PDF diferentes com o mesmo hash, encontrados com cerca de 2^63 cálculos de SHA-1. Em 2020, Gaëtan Leurent e Thomas Peyrin ("SHA-1 is a Shambles") usaram uma colisão de prefixo escolhido para demonstrar assinaturas SHA-1 forjadas em chaves PGP, a um custo ao alcance de um atacante com bons recursos.

  • As CAs públicas deixaram de emitir certificados TLS com SHA-1 em 2016, e os navegadores deixaram de confiar neles no início de 2017.
  • O NIST proíbe o SHA-1 em novas assinaturas digitais desde 2013 e pretende aposentá-lo por completo até o fim de 2030.
  • A maioria dos repositórios Git ainda identifica objetos por SHA-1, calculado com uma implementação reforçada que detecta tentativas de colisão; o Git também pode criar repositórios que usam SHA-256.

Colisões não quebram o HMAC, por isso o HMAC-SHA1 ainda aparece em códigos TOTP e em assinaturas de webhook mais antigas; calcule-o com o Gerador de HMAC. Para qualquer projeto novo, escolha o SHA-256.

IDs de objetos do Git, Base64 e codificação de texto

O ID de um blob no Git não é o SHA-1 apenas do arquivo. O Git calcula o hash de um cabeçalho formado por blob, um espaço, o tamanho em bytes e um byte zero, seguido do conteúdo. Para reproduzi-lo aqui, mude a entrada para Hex e inclua esses bytes de cabeçalho: para hello mais uma quebra de linha, a entrada em hex é 626c6f6220360068656c6c6f0a.

$ printf 'hello\n' | sha1sum
f572d396fae9206628714fb2ce00f72e94f2258f  -
$ printf 'hello\n' | git hash-object --stdin
ce013625030ba8dba906f756967f9e9ca394464a

O SHA-1 costuma ser exibido em hex minúsculo. O Base64 aparece no handshake do WebSocket, em que Sec-WebSocket-Accept é o SHA-1 em Base64 da chave do cliente mais um GUID fixo, e nos valores de senha {SHA} do LDAP. Lembre-se de que o hash é calculado sobre bytes: um texto com letras acentuadas tem um SHA-1 em UTF-8 e outro em Windows-1252.

SHA-1 na linha de comando e no código

sha1sum file.zip                          # Linux
shasum file.zip                           # macOS (SHA-1 é o padrão)
certutil -hashfile file.zip SHA1          # Windows
Get-FileHash file.zip -Algorithm SHA1     # PowerShell

# Python
hashlib.sha1(data).hexdigest()

// Node.js
crypto.createHash('sha1').update(data).digest('hex')

Esta página calcula o SHA-1 com a Web Crypto API embutida no seu navegador, então a entrada nunca sai do seu dispositivo. A tabela Todos os algoritmos mostra os valores MD5, SHA-256, SHA-384, SHA-512 e CRC da mesma entrada.

Exemplos

Entrada (UTF-8)SHA-1
Hello, World!0a0a9f2a6772942557ab5355d76af442f8f65e01
Base64.is6c667ee2efd2020349eed40efa07c26683f613c8
你好440ee0853ad1e99f962b63e459ef992d7c211722

Perguntas frequentes

O SHA-1 ainda é seguro?

Não onde um atacante pode escolher ou influenciar a entrada, como em assinaturas e certificados, porque é possível produzir colisões de SHA-1. Ele ainda detecta corrupção acidental, e o HMAC-SHA1 não é afetado por colisões. Em projetos novos, use SHA-256 ou SHA-512.

Um hash SHA-1 pode ser revertido?

Não. Não há chave nem descriptografia. Os sites de consulta só encontram entradas que já estão nas tabelas deles, com palavras comuns e senhas vazadas; por isso uma entrada longa e aleatória está a salvo deles, e uma senha curta não.

Qual é o tamanho de um hash SHA-1?
160 bits, ou 20 bytes: 40 caracteres hex ou 28 caracteres Base64 terminando em um =. O RIPEMD-160 tem o mesmo tamanho, e os hashes de senha do MySQL 4.1+ são um asterisco seguido de 40 caracteres hex. O Identificador de hash lista os candidatos para uma determinada string.
Como confiro um arquivo com um SHA-1 publicado?

Abra o arquivo e cole o valor publicado no campo Comparar com. Hex em maiúsculas ou minúsculas e Base64 são aceitos, e a página mostra Confere ou Não confere.

Qual é a diferença entre SHA-1 e SHA-256?

Os dois foram publicados pelo NIST, mas o SHA-256 pertence à família SHA-2, mais recente, tem saída de 256 bits e nenhum ataque prático conhecido. O SHA-1 tem uma saída mais curta, e sua resistência a colisões foi quebrada.