Primeiro, o MD5 é uma função hash que lê todos os dados de arquivo / string / entrada e gera um hash com formato hexadecimal de 128 bits. Esse hash é sempre o mesmo quando o arquivo ou a string dada é a mesma.
Com a utillity md5pass
você faz exatamente o mesmo, mas o hash é "salgado". Na criptografia, um "salt" é um dado aleatório usado como uma entrada adicional para uma função unidirecional que contém uma senha ou senha para aumentar a entropia. É por isso que md5pass
sempre gera um valor diferente.
Por que salgar?
O problema é que quando os usuários têm a mesma senha, eles têm o mesmo hash. Se o hash for salgado aleatoriamente, cada senha terá um valor de hash diferente. O sal deve ser salvo separadamente em outra tabela, porque é necessário para verificar a senha. Em md5pass
o sal pode ser definido (como o segundo argumento). Se nenhum sal é definido, o sistema gera um aleatório.
Outra vantagem é que no caso de MD5 ou SHA tabelas de arco-íris são menos efetivas como sem sal, porque, sem um sal, o valor de hash deve ser calculado apenas uma vez para cada senha.