[Cascavel-pm] diferenças entre crypt e Digest::MD5

Alceu R. de Freitas Jr. glasswalk3r em yahoo.com.br
Quinta Julho 14 12:09:50 PDT 2005


Olá monges,

Estou criando um script para administrar usuários no
Linux... para isso estou usando o módulo
Passwd::Linux. Só que é necessário "criptografar" a
senha do usuário antes de passá-la como parâmetro para
uma das funções do módulo.

Como distribuições Linux usam MD5 ao invés do DES no
/etc/shadow, eu simplesmente tentei usar o módulo
Digest::MD5 para gerar um hash, mas não funciona.
Tente tanto usar md5_hex e md5_base64, mas ambos não
funcionaram.

Lendo a documentação do crypt(), aparentemente a
função usa a própria biblioteca crypt do sistema UNIX
aonde o Perl foi instalado, o que garante que ele vá
gerar hashes da mesma forma. Fiz um teste com crypt e
também não funcionou (o tamanho do hash gerado é menor
do que utilizado no arquivo /etc/shadow).

Eu achei esse código pelo Google:

my @chars = ('a'..'z','A'..'Z',0..9,'.');
my $salt = '';

for ( 1..8 ) {

    $salt .= $chars[ int( rand( scalar( @chars ) ) )
];

}

my $encripted_pass = crypt( $plaintext, '$1$' . $salt
) or die( $! );

Eu ainda não testei esse código. O autor dele disse
que o salt deve começar com os caracteres '$1$' e
terminar com um '$' opcional. Ele só não disse daonde
ele retirou essa informação. ;-)

Alguém conhece esse detalhe? Não gostaria de ter que
recorrer a procurar isso no código fonte dos programas
passwd ou useradd.

Grato!


Alceu Rodrigues de Freitas Junior
--------------------------------------
glasswalk3r em yahoo.com.br
http://www.imortais.cjb.net
-----------------------------------------------------------------------
A well-used door needs no oil on its hinges.
A swift-flowing stream does not grow stagnant.
Neither sound nor thoughts can travel through a vacuum.
Software rots if not used.
These are great mysteries -- The Tao Of Programming, 5.1


	
	
		
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/


Mais detalhes sobre a lista de discussão Cascavel-pm