Gerador de Hash SHA-1

Gera hash SHA-1 de qualquer texto

Texto de entrada

Roda localmente · Seguro para colar segredos

Hash SHA-1

O hash SHA-1 aparecerá aqui…

O que é o Hashing SHA-1?

SHA-1 (Secure Hash Algorithm 1) é uma função de hash criptográfica que produz um resumo fixo de 160 bits (20 bytes) a partir de qualquer entrada. Publicado pela NSA e padronizado pelo NIST em 1995 como FIPS PUB 180-1 e posteriormente documentado na RFC 3174, o SHA-1 foi desenvolvido como um sucessor mais robusto do SHA-0 e do MD5. O algoritmo processa a entrada em blocos de 512 bits por 80 rodadas de operações bit a bit, gerando uma impressão digital hexadecimal de 40 caracteres que serviu de base para SSL/TLS, PGP, SSH e IPsec por mais de uma década.

Como toda função de hash criptográfica, o SHA-1 é uma transformação unidirecional: calcular o hash a partir de uma entrada é rápido, mas recuperar a entrada original a partir do hash é computacionalmente inviável. Uma mudança de um único bit na entrada produz um resumo de 160 bits completamente diferente — propriedade chamada de efeito avalanche. O SHA-1 mapeia um espaço de entrada arbitrariamente grande para uma saída fixa de 160 bits, o que significa que colisões (duas entradas diferentes gerando o mesmo hash) existem matematicamente. A premissa de segurança de uma função de hash é que encontrar essas colisões deve exigir aproximadamente 2^80 operações — metade do comprimento em bits da saída.

Em 2017, o Google e o CWI Amsterdam publicaram o ataque SHAttered, demonstrando a primeira colisão SHA-1 prática ao produzir dois arquivos PDF diferentes com o mesmo resumo. O ataque exigiu aproximadamente 2^63,1 computações SHA-1 — muito abaixo do limite teórico de 2^80. Em 2020, Gaetan Leurent e Thomas Peyrin reduziram ainda mais o custo com um ataque de colisão de prefixo escolhido que exigiu cerca de 2^63,4 operações. Em consequência, todos os principais navegadores, autoridades certificadoras e órgãos de padronização depreciaram o SHA-1 para assinaturas digitais e certificados TLS. Entretanto, o SHA-1 ainda é usado ativamente para fins não relacionados a segurança: IDs de objetos Git (embora o Git esteja migrando para SHA-256), construções HMAC legadas e checksums de integridade de arquivos onde a resistência a colisões adversariais não é necessária.

Por que usar este gerador de SHA-1?

Gere hashes SHA-1 instantaneamente sem instalar nada ou escrever código. Cole o texto e obtenha o resumo hexadecimal de 40 caracteres em tempo real — útil para verificar checksums legados, depurar componentes internos do Git ou testar fluxos de trabalho baseados em hash.

Hashing instantâneo
A saída é atualizada enquanto você digita. Sem cliques em botões, sem espera — o resumo SHA-1 aparece caractere por caractere conforme você modifica a entrada.
🔒
Processamento com privacidade em primeiro lugar
Todo o hashing é executado localmente no seu navegador usando a Web Crypto API. O texto de entrada nunca sai do seu dispositivo e nunca é enviado a nenhum servidor.
📋
Cópia com um clique
Copie o hash para a área de transferência com um único clique. Alterne entre saída hexadecimal em minúsculas e maiúsculas para corresponder ao formato esperado pelo seu sistema.
🔍
Sem cadastro necessário
Sem registro, sem login, sem limites de uso. Abra a página e comece a gerar hashes imediatamente. Funciona em qualquer dispositivo com um navegador moderno.

Casos de Uso do SHA-1

Componentes Internos e Depuração do Git
O Git identifica cada objeto (commit, tree, blob, tag) pelo seu hash SHA-1. Ao depurar comandos de plumbing do Git, verificar pack files ou desenvolver ferramentas Git personalizadas, um gerador de SHA-1 rápido ajuda a conferir IDs de objetos em relação aos valores esperados.
Verificação de Sistemas Legados
Muitos sistemas antigos, registros de pacotes e mecanismos de atualização de firmware ainda publicam checksums SHA-1 junto aos downloads. Gere e compare hashes SHA-1 para verificar a integridade de arquivos quando os resumos SHA-256 não estão disponíveis.
Integridade de Sub-recursos (SRI)
Embora sha256 e sha384 sejam preferidos para hashes SRI em tags script e link do HTML, algumas configurações de CDN legadas ainda dependem do SHA-1. Gere o resumo esperado para auditar ou migrar atributos SRI existentes.
QA e Testes de Regressão
Compare hashes SHA-1 de respostas de API, artefatos de build ou snapshots de banco de dados entre execuções de teste para detectar mudanças inesperadas sem realizar um diff completo byte a byte de saídas volumosas.
Deduplicação de Dados
Calcule hashes SHA-1 de conteúdos de arquivos ou registros de dados em pipelines ETL para identificar duplicatas. A saída de 160 bits oferece uma garantia de unicidade mais forte que o MD5 em cenários de deduplicação sem adversários.
Aprendizado e Estudo
O SHA-1 é um algoritmo bem documentado com vasta literatura acadêmica. Experimente-o para entender a construção de Merkle-Damgard, o escalonamento de mensagens e por que a resistência a colisões falha quando o comprimento da saída é curto demais em relação ao poder computacional moderno.

SHA-1 vs Outros Algoritmos de Hash

O SHA-1 produz um resumo de 160 bits — mais longo que o MD5 (128 bits), mas significativamente mais curto que os algoritmos da família SHA-2. A tabela abaixo compara tamanhos de resumo, padrões e casos de uso adequados para cada algoritmo.

AlgoritmoTamanho do ResumoComprimento HexPadrãoIdeal Para
SHA-1160 bits40 hex chars1995 / RFC 3174Deprecated — legacy git commits, old TLS
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
MD5128 bits32 hex chars1992 / RFC 1321Checksums only — broken since 2004
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, alternative to SHA-2
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

Como o SHA-1 Funciona

O SHA-1 segue a construção de Merkle-Damgard: a mensagem é preenchida, dividida em blocos de 512 bits, e cada bloco é processado por 80 rodadas de operações bit a bit que combinam a entrada com um escalonamento de mensagem derivado do bloco. Cinco palavras de estado de 32 bits (H0 a H4) carregam o estado de hash em execução, e a concatenação final dessas palavras produz o resumo de 160 bits.

Input: "hello world"
SHA-1: 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
(160 bits = 20 bytes = 40 hex characters)
EtapaDescrição
PaddingAppend a 1-bit, then zeros, until message length is 448 mod 512. Append the original length as a 64-bit big-endian integer.
Block splittingDivide the padded message into 512-bit (64-byte) blocks.
ExpansionExpand each 16-word block into 80 words using a left-rotate-by-1 XOR feedback schedule.
CompressionProcess 80 rounds per block using four nonlinear functions (Ch, Parity, Maj, Parity) across rounds 0-19, 20-39, 40-59, and 60-79.
OutputConcatenate the five 32-bit state words (H0-H4) into a 160-bit (20-byte) digest, rendered as 40 hexadecimal characters.

A principal diferença entre SHA-1 e MD5 é o número de palavras de estado (5 vs. 4), o número de rodadas por bloco (80 vs. 64) e o uso de um escalonamento de mensagem com retroalimentação de rotação à esquerda. Essas diferenças conferem ao SHA-1 uma saída maior (160 vs. 128 bits) e originalmente forneciam uma margem de segurança mais alta, embora ambos os algoritmos sejam hoje considerados vulneráveis quanto à resistência a colisões.

Exemplos de Código

Como gerar hashes SHA-1 nas linguagens e ambientes mais populares. Ao contrário do MD5, o SHA-1 está disponível na Web Crypto API do navegador, tornando-o utilizável sem bibliotecas externas tanto no navegador quanto em ambientes Node.js.

JavaScript (Web Crypto API — browser & Node.js)
// SHA-1 is available in the Web Crypto API
async function sha1(text) {
  const data = new TextEncoder().encode(text)
  const hashBuffer = await crypto.subtle.digest('SHA-1', data)
  const hashArray = Array.from(new Uint8Array(hashBuffer))
  return hashArray.map(b => b.toString(16).padStart(2, '0')).join('')
}

await sha1('hello world')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

// Node.js (built-in crypto module)
const crypto = require('crypto')
crypto.createHash('sha1').update('hello world').digest('hex')
// → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"
Python
import hashlib

# Basic SHA-1 hash
result = hashlib.sha1(b'hello world').hexdigest()
print(result)  # → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a string (encode to bytes first)
text = 'hello world'
hashlib.sha1(text.encode('utf-8')).hexdigest()
# → "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed"

# Hash a file in chunks
with open('file.bin', 'rb') as f:
    sha1 = hashlib.sha1()
    for chunk in iter(lambda: f.read(8192), b''):
        sha1.update(chunk)
    print(sha1.hexdigest())
Go
package main

import (
    "crypto/sha1"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := sha1.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
}
CLI (Linux / macOS)
# Using sha1sum (Linux) or shasum (macOS)
echo -n "hello world" | sha1sum
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# macOS
echo -n "hello world" | shasum -a 1
# → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed  -

# Hash a file
sha1sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl sha1
# → SHA1(stdin)= 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

Perguntas Frequentes

O SHA-1 ainda é seguro para uso?
O SHA-1 não é seguro para aplicações sensíveis à segurança. O ataque SHAttered de 2017 demonstrou a geração prática de colisões, e o ataque de prefixo escolhido de 2020 reduziu ainda mais o custo. Para assinaturas digitais, certificados TLS ou qualquer cenário em que um adversário possa criar entradas colidentes, use SHA-256 ou SHA-3. Para fins não relacionados à segurança, como checksums e chaves de cache onde nenhum adversário controla a entrada, o SHA-1 ainda é funcional.
Qual é a diferença entre SHA-1 e SHA-256?
O SHA-1 produz um resumo de 160 bits (40 caracteres hex) e é vulnerável a ataques de colisão. O SHA-256 produz um resumo de 256 bits (64 caracteres hex) e pertence à família SHA-2, que não tem ataques práticos conhecidos. O SHA-256 é aproximadamente 20-30% mais lento que o SHA-1 no mesmo hardware, mas os 96 bits adicionais de saída e a ausência de fraquezas estruturais conhecidas o tornam a recomendação padrão para qualquer novo projeto.
Por que o Git usa SHA-1?
Quando Linus Torvalds projetou o Git em 2005, o SHA-1 era considerado seguro e oferecia um bom equilíbrio entre velocidade e resistência a colisões para armazenamento endereçado por conteúdo. O Git usa o SHA-1 como identificador de conteúdo, não como mecanismo de segurança — ele detecta corrupção acidental, não adulteração adversarial. Desde 2021, o Git está migrando para SHA-256 por meio do framework de extensão de hash descrito no plano git-hash-function-transition.
É possível reverter um hash SHA-1 para a entrada original?
Não. O SHA-1 é uma função unidirecional que descarta informações durante o hashing. Para entradas curtas ou comuns, atacantes podem usar rainbow tables ou busca por força bruta para encontrar o texto original, mas isso não é uma reversão do algoritmo — é uma busca exaustiva no espaço de entradas. Para senhas, use bcrypt, scrypt ou Argon2 em vez de qualquer função de hash rápida.
Como funciona o ataque SHAttered?
O ataque SHAttered explora fraquezas estruturais na função de compressão do SHA-1. Ao construir cuidadosamente dois blocos de mensagem de 512 bits diferentes que produzem o mesmo estado de hash intermediário, os atacantes criaram dois arquivos PDF com resumos SHA-1 idênticos, mas conteúdo visível diferente. O ataque exigiu aproximadamente 2^63 computações SHA-1 — cerca de 6.500 anos de tempo de CPU única, mas viável em um cluster de GPU em meses. O custo caiu ainda mais com técnicas aprimoradas.
Qual é a diferença entre SHA-1 e HMAC-SHA1?
O SHA-1 é uma função de hash simples: hash = SHA1(mensagem). O HMAC-SHA1 é um código de autenticação de mensagem com chave: mac = HMAC(chave, mensagem). O HMAC envolve a função de hash em uma construção que impede ataques de extensão de comprimento e exige uma chave secreta. Curiosamente, o HMAC-SHA1 é considerado seguro para autenticação de mensagens mesmo que o próprio SHA-1 seja vulnerável quanto à resistência a colisões, porque a segurança do HMAC depende das propriedades de função pseudoaleatória da função de compressão, não da resistência a colisões.
Devo usar SHA-1 ou MD5 para checksums de arquivos?
O SHA-1 é uma escolha melhor que o MD5 para checksums de arquivos. O MD5 produz um resumo de 128 bits e está comprometido desde 2004, com ataques de colisão práticos agora executáveis em segundos. O SHA-1 produz um resumo de 160 bits e seus ataques de colisão, embora demonstrados, permanecem mais custosos. No entanto, para qualquer novo sistema, prefira o SHA-256 — ele oferece um resumo de 256 bits sem ataques práticos conhecidos e tem amplo suporte em todas as plataformas e linguagens.