Algoritmos de Hash Comparados: MD5, SHA-1, SHA-256 e Mais
As funções de hash criptográficas são fundamentais para a computação moderna. Verificam a integridade de ficheiros, protegem palavras-passe, autenticam mensagens e sustentam a tecnologia blockchain. Mas nem todos os algoritmos de hash são iguais. Este guia compara os algoritmos mais utilizados e ajuda-o a escolher o mais adequado.
O Que É uma Função de Hash?
Uma função de hash recebe uma entrada de qualquer tamanho e produz uma saída de comprimento fixo (o "digest" ou "hash"). As boas funções de hash têm três propriedades fundamentais:
- Determinística: A mesma entrada produz sempre a mesma saída
- Efeito avalanche: Uma pequena alteração na entrada altera completamente a saída
- Unidirecional: É computacionalmente inviável reverter o hash para obter a entrada original
Estas propriedades tornam os hashes inestimáveis para a verificação de integridade de dados e aplicações de segurança.
Comparação de Algoritmos
| Algoritmo | Tamanho da Saída | Velocidade | Estado de Segurança | Utilizar Hoje? |
|---|---|---|---|---|
| MD5 | 128 bits | Muito rápido | Comprometido | Apenas checksums |
| SHA-1 | 160 bits | Rápido | Comprometido | Não |
| SHA-256 | 256 bits | Moderado | Seguro | Sim |
| SHA-384 | 384 bits | Moderado | Seguro | Sim |
| SHA-512 | 512 bits | Rápido em 64-bit | Seguro | Sim |
| SHA-3-256 | 256 bits | Moderado | Seguro | Sim |
| BLAKE2b | 256-512 bits | Muito rápido | Seguro | Sim |
| BLAKE3 | 256 bits | Extremamente rápido | Seguro | Sim |
MD5: O Padrão Comprometido
O MD5 foi concebido por Ronald Rivest em 1991, produzindo um hash de 128 bits. Durante mais de uma década, foi a escolha padrão para checksums e verificação de integridade.
Porque é que o MD5 está comprometido: Em 2004, investigadores demonstraram ataques de colisão práticos — encontrar duas entradas diferentes que produzem o mesmo hash. Em 2008, investigadores criaram um certificado CA fraudulento utilizando colisões MD5. Atualmente, colisões podem ser encontradas em segundos em hardware de consumo.
Quando o MD5 ainda é aceitável: Checksums não relacionados com segurança, como verificar transferências de ficheiros onde a adulteração não é uma preocupação. Para qualquer coisa relacionada com segurança, evite o MD5 completamente.
SHA-1: Descontinuado mas Persistente
O SHA-1, concebido pela NSA e publicado em 1995, produz um hash de 160 bits. Substituiu o MD5 como padrão durante muitos anos.
Porque é que o SHA-1 está comprometido: A Google e o CWI Amsterdam demonstraram uma colisão prática em 2017 (o ataque "SHAttered"). Os principais navegadores abandonaram o suporte a certificados SHA-1 em 2017. O Git utilizava originalmente SHA-1 para hashes de commits e está a transitar para SHA-256.
Estado atual: Descontinuado para todos os fins de segurança. Se encontrar SHA-1 em sistemas legados, planeie uma migração para SHA-256 ou SHA-3.
SHA-256: O Padrão Atual
O SHA-256 pertence à família SHA-2, concebida pela NSA e publicada em 2001. Produz um hash de 256 bits e é o algoritmo de hash seguro mais utilizado atualmente.
Segurança: Não foram encontrados ataques práticos contra o SHA-256. Proporciona 128 bits de resistência a colisões, o que é considerado suficiente para o futuro previsível.
Desempenho: O SHA-256 é mais lento que o MD5 e o SHA-1, o que é na verdade uma vantagem quando utilizado para hashing de palavras-passe (mais lento = mais difícil de forçar por força bruta). Em CPUs modernos com aceleração por hardware (instruções SHA-NI), o desempenho é excelente.
Onde o SHA-256 é utilizado:
- Certificados TLS/SSL
- Mineração de Bitcoin
- Assinaturas digitais
- Assinatura de código
- Verificação de integridade de ficheiros
Gere hashes SHA-256 instantaneamente com o nosso Gerador de Hash.
SHA-3: O Padrão Alternativo
O SHA-3, baseado no algoritmo Keccak, venceu a competição de funções de hash do NIST em 2012. Utiliza uma estrutura interna completamente diferente (construção esponja) do SHA-2.
Porque é que o SHA-3 é importante: Se um avanço matemático comprometer o SHA-2, o SHA-3 fornece uma alternativa completamente independente. O seu design diferente significa que uma vulnerabilidade no SHA-2 é improvável de afetar o SHA-3.
Adoção: A adoção do SHA-3 tem sido mais lenta do que o esperado porque o SHA-2 permanece inviolado. É cada vez mais utilizado em aplicações blockchain e como hash secundário em arquiteturas de defesa em profundidade.
BLAKE2 e BLAKE3: Campeões de Velocidade
O BLAKE2 (2012) e o BLAKE3 (2020) são funções de hash modernas concebidas para desempenho sem comprometer a segurança.
Destaques do BLAKE3:
- Mais rápido que o MD5 em CPUs modernos
- Inerentemente paralelo (escala com núcleos do CPU)
- Saída de 256 bits
- Suporte integrado para hashing com chave e derivação de chaves
Para aplicações onde a velocidade é crítica e não está limitado aos padrões NIST, o BLAKE3 é uma excelente escolha.
Escolher o Algoritmo Certo
Para Hashing de Palavras-passe
Não utilize nenhum dos algoritmos acima diretamente. Utilize funções dedicadas de hashing de palavras-passe: Argon2id (vencedor da Password Hashing Competition), bcrypt ou scrypt. Estas são intencionalmente lentas e exigentes em memória para resistir a ataques de força bruta. Saiba mais no nosso guia de segurança de palavras-passe.
Para Integridade de Ficheiros
O SHA-256 é a escolha padrão. Se o desempenho for crítico e controlar ambos os extremos, o BLAKE3 é mais rápido mantendo a segurança.
Para Assinaturas Digitais
SHA-256 ou SHA-384, dependendo do nível de segurança necessário. Aplicações governamentais e financeiras frequentemente exigem SHA-384 ou SHA-512.
Para Checksums (Não Relacionados com Segurança)
CRC32 ou xxHash para velocidade quando a segurança não é uma preocupação. Se precisar de uma garantia criptográfica, o SHA-256 é o mínimo.
Para Aplicações Blockchain
SHA-256 (Bitcoin), Keccak-256 (Ethereum) ou BLAKE2b (Zcash). A escolha depende frequentemente dos requisitos específicos do protocolo.
Colisões de Hash Explicadas
Uma colisão ocorre quando duas entradas diferentes produzem a mesma saída de hash. O paradoxo do aniversário significa que as colisões são encontradas muito mais rapidamente do que se poderia esperar:
- Para um hash de 128 bits (MD5), uma colisão requer aproximadamente 2^64 operações
- Para um hash de 256 bits (SHA-256), uma colisão requer aproximadamente 2^128 operações
Esta diferença exponencial é a razão pela qual duplicar o comprimento do hash fornece muito mais do que o dobro da segurança.
Exemplo Prático
Eis como a mesma entrada aparece em diferentes algoritmos:
Input: "Hello, World!"
MD5: 65a8e27d8879283831b664bd8b7f0ad4
SHA-1: 0a0a9f2a6772942557ab5355d76af442f8f65e01
SHA-256: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
Experimente gerar estes você mesmo com o nosso Gerador de Hash. Todo o processamento acontece no seu navegador — os seus dados permanecem privados.
FAQ
O SHA-256 é resistente a computação quântica?
O SHA-256 é parcialmente resistente a ataques quânticos. O algoritmo de Grover poderia reduzir a segurança efetiva de 256 bits para 128 bits para ataques de pré-imagem, o que ainda é considerado seguro. Para resistência a colisões, os computadores quânticos oferecem menos vantagem. Os padrões de criptografia pós-quântica focam-se mais na encriptação e assinaturas do que nas funções de hash.
Devo utilizar SHA-512 em vez de SHA-256 para segurança extra?
Para a maioria das aplicações, o SHA-256 proporciona segurança suficiente. O SHA-512 é na verdade mais rápido em processadores de 64 bits devido à sua estrutura interna, pelo que pode ser uma boa escolha por razões de desempenho. O comprimento de hash extra proporciona resistência adicional a colisões, mas raramente é o fator decisivo.
Recursos Relacionados
- Gerador de Hash — Gere hashes MD5, SHA-1, SHA-256 e SHA-512 online
- Guia de Segurança de Palavras-passe — Melhores práticas para criar e armazenar palavras-passe
- Tokens JWT Explicados — Como os algoritmos de hash protegem os JSON Web Tokens