SHA256 vs SHA1: Qual Função Hash Você Deve Usar?

19 Jan 2026 1,664 words

SHA256 vs SHA1

SHA1 e SHA256 são funções hash criptográficas da família SHA (Secure Hash Algorithm), mas diferem significativamente em segurança e tamanho de saída. Escolher a função hash errada para sua aplicação pode ter sérias consequências de segurança, desde assinaturas digitais enfraquecidas até o comprometimento completo de sistemas de verificação de senhas. Este guia fornece uma comparação completa para ajudar você a tomar uma decisão informada.

Uma função hash criptográfica recebe uma entrada de qualquer tamanho e produz uma saída de tamanho fixo chamada digest ou valor hash. As propriedades críticas de uma função hash segura incluem resistência a pré-imagem (dado um hash, deve ser inviável encontrar qualquer entrada que o produza), resistência a segunda pré-imagem (dada uma entrada, deve ser inviável encontrar uma entrada diferente com o mesmo hash) e resistência a colisões (deve ser inviável encontrar duas entradas diferentes que produzam o mesmo hash). Tanto SHA1 quanto SHA256 foram projetados para fornecer essas propriedades, mas a resistência a colisões do SHA1 foi quebrada na prática.

Como as Funções Hash Funcionam

Tanto SHA1 quanto SHA256 pertencem à família de construção Merkle-Damgard. Eles processam dados de entrada em blocos de tamanho fixo de 512 bits. A entrada é primeiro padronizada para garantir que seu comprimento seja múltiplo do tamanho do bloco. A padronização inclui o comprimento original da mensagem, o que previne certos tipos de ataque. Cada bloco é então processado através de uma função de compressão que atualiza um estado interno. O estado final após processar todos os blocos torna-se a saída do hash.

SHA1 usa 80 rodadas de compressão com palavras de 32 bits e produz uma saída de 160 bits. O algoritmo usa quatro constantes de rodada e vinte funções de rodada, com cada rodada operando em cinco variáveis de trabalho de 32 bits. SHA256 usa 64 rodadas de compressão, também com palavras de 32 bits, mas produz uma saída de 256 bits usando oito variáveis de trabalho e seis funções lógicas. O número aumentado de variáveis de trabalho e funções de rodada mais complexas tornam o SHA256 significativamente mais resistente a ataques criptanalíticos.

Principais Diferenças

Característica SHA1 SHA256
Tamanho da saída 160 bits (40 caracteres) 256 bits (64 caracteres)
Segurança Quebrado (ataque SHAttered) Seguro
Velocidade Mais rápido Mais lento
Rodadas 80 64
Tamanho do bloco 512 bits 512 bits
Tamanho da palavra 32 bits 32 bits
Recomendado? Não Sim

A diferença mais crítica é a segurança. SHA1 é considerado criptograficamente quebrado porque pesquisadores demonstraram ataques de colisão práticos. SHA256, em 2026, permanece seguro sem nenhum ataque prático conhecido que reduza sua segurança efetiva abaixo do seu nível de segurança de 128 bits. Um nível de segurança de n bits significa que o melhor ataque conhecido requer aproximadamente 2^n operações para quebrar a função hash. Para SHA256, isso significa 2^128 operações, o que é inviável com a tecnologia atual e previsível.

A diferença no tamanho da saída também é praticamente significativa. Uma saída de 160 bits significa que existem apenas 2^160 valores hash possíveis. Pelo paradoxo do aniversário, uma colisão pode ser encontrada em aproximadamente 2^80 operações. Embora 2^80 já tenha sido considerado inviável, avanços em computação GPU e hardware especializado tornaram esta superfície de ataque prática para atacantes bem financiados. A resistência a colisões de 2^128 do SHA256 permanece fora de alcance.

Comparação Completa da Família SHA

A família SHA evoluiu ao longo de três décadas, com cada geração melhorando as fraquezas das anteriores.

Algoritmo Saída Nível de Segurança Ano Status
SHA0 160 bits 80 bits 1993 Quebrado
SHA1 160 bits 80 bits 1995 Obsoleto
SHA224 224 bits 112 bits 2004 Seguro
SHA256 256 bits 128 bits 2004 Seguro
SHA384 384 bits 192 bits 2004 Seguro
SHA512 512 bits 256 bits 2004 Seguro
SHA3-256 256 bits 128 bits 2015 Seguro

SHA0 foi retirado pouco após a publicação devido a uma falha não divulgada. SHA1 foi projetado como uma correção para SHA0 e serviu como padrão da indústria por quase duas décadas. SHA224, SHA256, SHA384 e SHA512 são coletivamente conhecidos como SHA-2 e foram publicados pelo NIST em 2001 (padronizados em 2004). SHA-3, publicado em 2015, é baseado na construção esponja Keccak e oferece uma alternativa ao SHA-2 com princípios de design fundamentalmente diferentes.

Ao escolher uma função hash, você deve usar SHA256 para a maioria das aplicações. SHA384 e SHA512 oferecem níveis de segurança mais altos, mas ao custo de saídas maiores e desempenho mais lento. SHA3-256 é uma excelente escolha quando você deseja diversificar suas dependências criptográficas da família SHA-2.

Por Que SHA1 Foi Aposentado

A aposentadoria do SHA1 não aconteceu da noite para o dia. Criptanalistas vinham alertando sobre fraquezas no SHA1 desde 2005, quando pesquisadores demonstraram que a resistência teórica a colisões era de apenas 2^69 operações em vez dos 2^80 esperados. Ao longo da década seguinte, essas estimativas foram progressivamente reduzidas à medida que as técnicas criptanalíticas melhoravam.

Em 2017, a Google demonstrou o primeiro ataque de colisão SHA1 prático (SHAttered). Eles criaram dois arquivos PDF diferentes com o mesmo hash SHA1 usando aproximadamente 9 quintilhões (9.223.372.036.854.775.808) de computações SHA1. Isso exigiu cerca de 6.500 anos de tempo de CPU, mas apenas 110 anos-GPU. O ataque foi realizado usando a infraestrutura em nuvem da Google e custou aproximadamente $110.000 em tempo de computação, demonstrando que colisões SHA1 estavam ao alcance de organizações bem financiadas.

O ataque SHAttered especificamente gera dois arquivos PDF conflitantes ao construir cuidadosamente estruturas PDF que permitem grandes blocos idênticos enquanto diferem em um pequeno número de bits que produzem o mesmo hash SHA1. O impacto prático deste ataque inclui a possibilidade de criar dois pacotes de software ou documentos com conteúdos diferentes, mas hashes SHA1 idênticos. Uma assinatura em um poderia ser fraudulentamente reivindicada como aplicável ao outro.

Os principais navegadores e autoridades de certificação desde então descontinuaram o SHA1. A partir de 2017, o Chrome mostra um aviso de segurança para certificados SHA1. Em 2020, todos os principais navegadores removeram a confiança em certificados baseados em SHA1, efetivamente encerrando o uso do SHA1 no ecossistema PKI da web.

Comparação de Desempenho

SHA1 é mais rápido que SHA256 por várias razões. Primeiro, SHA1 processa entrada em 80 rodadas por bloco, mas cada rodada é mais simples que as 64 rodadas do SHA256. SHA256 usa funções lógicas mais complexas e estado interno maior, o que requer mais computação por rodada. Segundo, o estado interno de 160 bits do SHA1 cabe em menos registradores que o estado de 256 bits do SHA256, permitindo implementação mais eficiente em processadores de 32 bits.

Na prática, SHA256 é aproximadamente 25 a 40 por cento mais lento que SHA1 em implementações de software. Em hardware moderno com aceleração de hardware (extensões SHA em processadores x86), o desempenho do SHA256 é significativamente melhor. Processadores Intel e AMD com extensões SHA-NI podem computar SHA256 a velocidades superiores a 2 GB/s, reduzindo a diferença com SHA1.

Para a maioria das aplicações, a diferença de desempenho entre SHA1 e SHA256 é insignificante. O atraso perceptível ao humano ao gerar hash de um arquivo ou verificar uma assinatura é dominado por operações de E/S, não pela computação do hash. O único cenário onde a vantagem de velocidade do SHA1 importa é em sistemas de alto throughput que computam bilhões de hashes, como mineração de blockchain ou cracking de senhas em larga escala, nenhum dos quais é um caso de uso legítimo para SHA1 em novos projetos.

Quando Usar SHA256

Caso de Uso Hash Recomendado
Certificados SSL/TLS SHA256
Verificação de integridade de arquivos SHA256 ou SHA512
Hash de senhas (com salt) bcrypt ou argon2
Assinaturas digitais SHA256
Blockchain SHA256 (Bitcoin)
Assinatura de código SHA256

Para certificados SSL/TLS, SHA256 é o requisito mínimo desde que os principais navegadores descontinuaram SHA1 em 2017. Autoridades de certificação não estão mais autorizadas a emitir certificados assinados com SHA1 para confiança pública. A verificação de integridade de arquivos, como arquivos de soma de verificação distribuídos com downloads de software, deve usar SHA256. Muitas plataformas de distribuição de software migraram de somas de verificação SHA1 para SHA256, embora você ainda possa encontrar somas de verificação SHA1 para pacotes legados.

O hash de senhas requer atenção especial. Embora SHA256 seja uma função hash criptográfica segura, não é adequada para armazenamento de senhas por si só. SHA256 é projetada para ser rápida, que é exatamente o que os atacantes querem ao tentar quebrar hashes de senhas roubadas. Para armazenamento de senhas, use uma função hash dedicada como bcrypt, scrypt ou argon2. Estas funções incorporam salting e são deliberadamente lentas e resistentes a memória para resistir a ataques de força bruta.

Exemplos Reais de Migração

Git, o sistema de controle de versão amplamente utilizado, migrou de SHA1 para SHA256 como parte de sua transição para armazenamento de objetos baseado em SHA256. A partir do Git 2.29, o Git suporta repositórios SHA256 juntamente com repositórios SHA1 tradicionais. A transição exigiu esforço significativo porque o modelo de dados do Git depende fortemente de valores hash para identificar objetos e verificar a integridade do repositório.

A comunidade do kernel Linux começou a aceitar somas de verificação SHA256 para arquivos de lançamento do kernel a partir de 2011, complementando as somas de verificação SHA1 existentes. Em 2017, kernel.org parou de gerar somas de verificação SHA1 para novos lançamentos completamente, usando SHA256 e SHA512 exclusivamente.

Use a ferramenta Gerador SHA256 para gerar hashes SHA256 online.


About this article

Compare as funções hash SHA256 e SHA1 para entender qual é mais segura e adequada para seus projetos.


Related Articles


Related Tools

Help2Code Logo
Menu