O LinuxCrypt é um componente que utiliza o algoritmo de criptografia de senhas 
do Linux, gerando um hash de 34 bytes que é impossível (??) de decriptografar! 
Bom... Então, como o linux verifica a senha do usuário? Fácil!! Basta 
criptografar a senha informada por ele e comparar o hash resultante com a senha
armazenada no banco de dados!

Para ilustrar, veja um exemplo:

-> É definida uma senha para um usuário através dos seguinte comandos:

   LinuxCrypt.GenerateSalt := True; // Essa instrução evita a necessidade de 
   passarmos o Salt (8 caracteres aleatórios) manualmente para a o método 
   MD5Crypt(Senha, Salt).

   senha_usuario := LinuxCrypt.MD5Crypt('senha', ''); // A senha informada 
   pelo usuário foi 'senha', mas poderia ser PChar(Edit1.Text), por exemplo. 
   Repare que o typecast PChar() torna-se necessário quando usamos Edit's!

   Dependendo do valor de Salt, a senha criptografada (hash) será algo parecido
   com '$1$m8IlinIx$DUTJQVtvda2Yy2CpFfcux1'. Esse valor será atribuído à 
   variável senha_usuario. Repare os 8 caracteres entre o segundo $ e o 
   último $, 'm8IlinIx'.  Esse foi o Salt gerado automaticamente pelo 
   componente e deverá ser usado no momento de verificação de senhas.
   
-> Verificando se a senha digitada confere:

   LinuxCrypt.GenerateSalt := False; // Precisaremos passar o Salt manualmente
   (m8IlinIx) para a função MD5Crypt, para verificar se o hash retornado 
   confere com o armazenado.
   
   if LinuxCrypt.MD5Crypt(senha_informada_pelo_usuario, Copy(senha_usuario, 4, 8))
   = senha_usuario then ... // Nesse instante estamos passando a string da variavel
   senha_informada_pelo_usuario, juntamente com o salt gerado anteriormente 
   (Copy(senha_usuario, 4, 8), que é igual à m8IlinIx) e verificando se o valor do 
   retorno é igual à senha criptografada anteriormente 
   ('$1$m8IlinIx$DUTJQVtvda2Yy2CpFfcux1').

   Se o usuário informou 'senha', o retorno será exatamente o hash gerado 
   anteriormente e assim, podemos verificar que as senhas são iguais.

Esse é exatamente o procedimento que o Linux utiliza quando vc entra com o usuário 
e senha na tela de login. A senha não pode ser descriptografada, mas nada impede 
que criptografamos algo digitado pelo usuário e comparamos com o hash armazenado 
no banco de dados!!

Boas Criptografias!!

Bruno Freitas