SHA-256 vs MD5: qual usar para segurança?
Compare os algoritmos de hash MD5, SHA-1 e SHA-256. Entenda por que MD5 é inseguro para criptografia e quando cada algoritmo ainda é adequado.
Funções de hash criptográficas transformam qualquer entrada em uma string de tamanho fixo (o "digest"). São utilizadas para verificar integridade de arquivos, armazenar senhas e autenticar mensagens. Mas não são todas iguais — MD5, SHA-1 e SHA-256 têm características muito diferentes quando o assunto é segurança.
MD5: rápido mas quebrado para segurança
O MD5 gera um digest de 128 bits (32 caracteres hexadecimais). Era amplamente usado nos anos 90 para verificação de integridade e senhas. O problema: em 2004, pesquisadores demonstraram colisões práticas no MD5 — dois arquivos diferentes com o mesmo hash. Em 2008, foi possível criar certificados SSL falsos explorando colisões MD5. Hoje, uma GPU moderna consegue calcular bilhões de hashes MD5 por segundo.
SHA-1: deprecado pelo NIST
SHA-1 gera um digest de 160 bits. O NIST deprecou SHA-1 para uso criptográfico em 2011. Em 2017, o Google demonstrou o primeiro ataque de colisão prático (SHAttered) — dois PDFs diferentes com o mesmo hash SHA-1. Navegadores removeram suporte a certificados SSL assinados com SHA-1. Não use SHA-1 para novos sistemas.
SHA-256: o padrão atual
SHA-256 faz parte da família SHA-2 e gera um digest de 256 bits (64 caracteres hexadecimais). Não há colisões conhecidas. É o algoritmo por trás do Bitcoin, de certificados SSL modernos, de JWTs (HS256/RS256) e de inúmeros protocolos de segurança. Para uso geral em 2024, SHA-256 é a escolha correta.
- MD5: 128 bits, quebrado para segurança, OK para checksums não-críticos
- SHA-1: 160 bits, deprecado, não use em sistemas novos
- SHA-256: 256 bits, seguro, padrão atual recomendado
- SHA-512: 512 bits, mais lento, útil quando segurança máxima é prioridade
Para senhas: use bcrypt ou argon2, não SHA
Use as ferramentas de hash do UtilDev para gerar e comparar hashes MD5, SHA-1 e SHA-256 diretamente no navegador. Útil para verificar integridade de arquivos, depurar APIs e comparar valores esperados em testes.