Uma impressão digital dos bytes
MD5 significa Message-Digest Algorithm 5. A partir de bytes, gera um resultado fixo de 128 bits. Cada caractere hexadecimal representa quatro bits; por isso o valor completo tem 32 caracteres. O tamanho não cresce com o arquivo e não contém uma codificação reversível do original.
As palavras visíveis de um documento não são necessariamente todos os bytes salvos. Cabeçalhos, imagens, metadados e marcas de ordem de bytes podem fazer parte do arquivo. Selecione o arquivo para identificar esse artefato. Para uma string, defina a codificação: aqui usamos UTF-8.
Reproduza um exemplo pequeno
Digite abc sem aspas nem quebra final. O MD5 esperado é:
900150983cd24fb0d6963f7d28e17f72
Adicione um espaço e gere novamente. O resultado diferente é esperado. Gerar deliberadamente com o editor vazio calcula a string vazia: d41d8cd98f00b204e9800998ecf8427e. O estado inicial de espera não significa que ela já foi calculada.
Determinístico não significa único
Os mesmos bytes sempre produzem o mesmo resumo, mas 128 bits não identificam exclusivamente todas as entradas possíveis. Existem colisões e ataques práticos contra MD5. Ele não deve sustentar assinaturas digitais modernas nem alegações de resistência a alterações maliciosas.
Um checksum pode ajudar a diagnosticar mudanças acidentais quando a referência é adequada. Ele não prova que o arquivo é inofensivo, que o fornecedor é autêntico ou que a referência veio de um canal seguro. Separe confiança na origem de igualdade numérica.
Hash, criptografia e tentativas
Criptografia reversível permite recuperar dados com uma chave. MD5 não foi feito para essa operação. Calcular candidatos de um dicionário e reconhecer uma entrada conhecida não significa descriptografar um MD5. Este site não oferece quebra de senhas ou dicionários de consulta.
MD5 rápido e sem sal também não é um desenho seguro para armazenar senhas. Não cole segredos reais apenas para observar um hash. HMAC atende testes de autenticação com chave e também não oculta a mensagem.
Preserve o resultado completo
Maiúsculas e minúsculas representam os mesmos bytes. Espaços internos, zeros iniciais omitidos ou um trecho final perdido podem invalidar uma comparação. Guarde o algoritmo com o valor completo ao baixar um registro ou compartilhar um checksum.