O que é criptografia md5 e como validar chave md5 via terminal com bash ou ZSH

O que é o md5 ?

Se você ainda se pergunta para o que serve essa tão difundida sigla em diversos sites que avisam para validar a chave antes de abrir um download ou comparar se as copias do mesmo arquivo permanecem inalteradas, ela serve exatamente para essa instrução óbvia , que de tão banal até parece algo de outro mundo.

Confesso que eu mesmo demorei para parar e aprender o significado e conceito. Em resumo é uma sequencia alfanumérica criptografada em 128bits de uma sequencia de código seja ele qual for, usando termos técnicos é o fingerprint em formato hash resultante de uma string. Qualquer string que seja idêntica ao ser criptografa via md5 irá resultar no mesmo fingerprint / hash, exatamente a mesma sequencia.

Entendendo o como funciona talvez você concorde comigo: muito mais simples do que parecia ser não é mesmo? A verdade é que não é bem assim. A explicação lógica é exatamente a acima, mas de tão simples a versatilidade de uso para aplicações praticas é quase infinita. Simples de entender, mas pode ser complexa de aplicar, depende da sua criatividade.

Para que serve o md5? Exemplo mais comum de uso do md5

Ao baixar qualquer arquivo, copiar ou transferir de lugar, pode ocorrer o que é chamado de perda de dados, pequenos pacotes de bits que simplesmente se perdem nessa movimentação entre redes, hds, etc. Isso ocorre de forma não tão incomum, principalmente downloads via internet, você mesmo já baixou arquivos com perdas, muito mais que 1 vez, e que se quer percebeu o erro. Arquivos podem abrir e serem executados com essas perdas se nunca precisarem daquele trecho de código.

Para se ter certeza de que um download ou cópia de um arquivo permanece exatamente idêntico sem nenhuma perda ou dados a mais que não deveriam estar ali, se usa o md5. Você deve ter o hash do arquivo original para comparação utilizar sua versão local gerando o hash em md5.

Lembrando que códigos idênticos resultam o mesmo hash sempre, temos uma forma de validação bastante confiável.

Validação de hash criptografada com md5 é confiável?

Dependendo do nível de certeza que você precisa assegurar do fingerprint, pode ser que não. Se é confiável, para a grande maioria dos casos diria que sim. Mas como tudo no digital, nunca há certeza absoluta com 100% de confiabilidade.

Mais do que checar pacotes perdidos, afinal para onde bloodyhell que eles vão? rsss… queremos saber o contrário, se não existem trechos indevidos escondidos em um arquivo. Desse método que nascem muitos malwares que spiderwares espalhados e que se quer a maioria dos usuários percebe que esta infectada ou desconfia que o aquele arquivo esta infectado.

Código via linha de comando para gerar hash md5 de qualquer arquivo via bash ou ZSH

Já nativo dos Shells bash ou ZSH para criar o hash, utilize o comando abaixo:

$ md5 /pasta/nome_do_arquivo.formato

O resultado será o hash daquele arquivo em si. Em exemplo prático aplicado:

$ md5 /Volumes/Storage/Downloads/mysql.dmg
MD5 (/Volumes/Storage/Downloads/mysql.dmg) = d3bd2dea0bafb0fb1968473390746d59

Ou para tornar somente o hash sem o caminho e nome do arquivo:

md5 -q /Volumes/Storage/Downloads/mysql.dmg   
d3bd2dea0bafb0fb1968473390746d59

Arquivos muito pesados tendem a demorar mais tempo para retornar o hash, uma vez que é lido e criptografado em 128b todo o código.