Como usar
- Digite um texto, mude a entrada para Hex para informar bytes ou abra um arquivo.
- O SHA-1 já vem selecionado; mude a lista Algoritmo se quiser compará-lo com outra função de hash.
- Em Saída como, escolha hex (minúsculas), o formato exibido pelo sha1sum e pelo Git, HEX (maiúsculas) ou Base64.
- 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.is | 6c667ee2efd2020349eed40efa07c26683f613c8 |
你好 | 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?
=. 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.