Gerador de Hash SHA1

SHA-1 produz um digest de 160 bits (40 caracteres hexadecimais) e é o hash por trás dos IDs de objetos git, checksums legados do SVN e uma pilha de sistemas de assinatura anteriores a 2017. Cole qualquer texto e você obterá o hash determinístico. Um grande aviso: SHA-1 está quebrado para resistência a colisões (SHAttered, 2017) e não deve ser usado para novas assinaturas ou armazenamento de senhas, é aceitável apenas para verificações de integridade não adversariais.

Como calcular um hash SHA-1

  1. 1

    Cole sua entrada

    Qualquer texto, uma string, um arquivo completo despejado em texto ou uma sequência hexadecimal.

  2. 2

    A codificação é UTF-8

    A entrada é serializada como bytes UTF-8 antes da hash, correspondendo ao padrão no OpenSSL, Python hashlib e Node crypto.

  3. 3

    O loop Merkle-Damgård é executado

    A mensagem é preenchida, dividida em blocos de 512 bits e alimentada através da função de compressão SHA-1 em 80 rodadas por bloco.

  4. 4

    Copie o digest hexadecimal de 40 caracteres

    A saída é sempre 40 caracteres hexadecimais minúsculos (160 bits).

SHA-1 em um relance

Propriedade Valor
Tamanho da saída 160 bits / 40 caracteres hexadecimais
Tamanho do bloco 512 bits
Rodadas 80
Resistência a colisões Quebrado (2^63 prefixo escolhido)
Resistência a pré-imagem Intacta (até a redação)
Velocidade ~500 MB/s em um único núcleo moderno

Onde SHA-1 ainda é aceitável

  • Git. IDs de commit e blob são SHA-1 (com SHA-256 como uma opção). Colisões confundiriam a história, mas não podem forjar um commit sem a chave do autor.
  • Deduplicação não relacionada à segurança. Endereçamento de conteúdo de armazenamento de objetos onde o modelo de ameaça não inclui um atacante.
  • APIs compatíveis com versões anteriores. Webhooks legados como o X-Hub-Signature do GitHub (v1).
  • Identificadores forenses. Impressão digital de arquivos para deduplicação em um arquivo.

Onde SHA-1 não é aceitável

  • Certificados TLS. Navegadores desconfiam de certificados SHA-1 desde 2017.
  • Assinatura de código. Microsoft, Apple e Mozilla rejeitaram assinaturas SHA-1.
  • Hashing de senhas. Use Argon2id ou bcrypt.
  • HMAC em um novo design. Use HMAC-SHA-256 no mínimo.

Se você quiser verificar a saída

Compare com echo -n "hello" | sha1sum em qualquer sistema Unix. O hash para a string hello é aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d.

Perguntas frequentes

Não matematicamente. Para entradas curtas comuns, um atacante com um dicionário pré-computado pode identificá-las instantaneamente, razão pela qual hashes sozinhos não protegem senhas. Para uma string aleatória de 40 caracteres, não existe uma reversão prática.

Não. SHA (Secure Hash Algorithm) é uma família publicada pelo NIST. SHA-1 é o algoritmo de 160 bits de 1995. SHA-2 é a família que inclui SHA-224, SHA-256, SHA-384 e SHA-512.

Por compatibilidade com mais de uma década de história. Desde 2017, o git se fortalece contra colisões de prefixo escolhido (SHA-1DC) e suporta repositórios SHA-256 para novos projetos.

No nosso servidor. Seu texto é enviado por uma conexão criptografada, processado com a função SHA-1 padrão e o digest de 40 caracteres é retornado. Não armazenamos o texto que você envia. Como SHA-1 é unidirecional, o próprio digest não pode ser convertido de volta na sua entrada.

Ferramentas relacionadas

Ferramenta disponível em outros idiomas