MD5: um hash quebrado para segurança, mas ainda útil para outra coisa
MD5 produz um hash de 128 bits (32 caracteres hexadecimais) a partir de
qualquer entrada, e essa saída é gerada aqui pelo servidor via
md5() do PHP — diferente de ferramentas como o
QR Code ou a
Criptografia AES deste site,
que processam tudo no navegador, o texto informado aqui é enviado ao
servidor para calcular o hash, então não é indicado para dado sensível
ou secreto de verdade. Vale essa transparência antes de qualquer outra
consideração técnica.
Por que MD5 está formalmente quebrado como algoritmo de segurança
Desde 2004, existem ataques práticos e demonstrados de colisão contra MD5 — a capacidade de construir dois conteúdos diferentes que produzem exatamente o mesmo hash MD5, deliberadamente. Isso quebra a premissa fundamental que torna um hash útil para segurança (que encontrar uma colisão seja computacionalmente inviável), e é o motivo pelo qual toda diretriz de segurança moderna (NIST incluído) recomenda não usar MD5 para assinatura digital, verificação de integridade contra adulteração deliberada, ou armazenamento de senha — em nenhum desses casos, um atacante que consegue forjar uma colisão consegue contornar a proteção que o hash deveria oferecer.
Onde MD5 continua sendo uma escolha razoável
A vulnerabilidade de colisão importa especificamente quando existe um adversário tentando forjar deliberadamente um conteúdo alternativo com o mesmo hash. Para checksums onde não há adversário — verificar se um arquivo baixado corrompeu por acidente durante a transferência, gerar uma chave de cache determinística a partir de um conteúdo, ou deduplicar registros idênticos num pipeline de dados — a velocidade de cálculo do MD5 (mais rápido que SHA-256 em hardware comum) ainda o torna uma escolha prática, já que não há ninguém tentando deliberadamente burlar a checagem.