[Linux-bruxelles] Cryptage constant : quelle méthode choisir pour PHP.

Alexandre Dulaunoy alexandre.dulaunoy at ael.be
Lun 19 Aou 22:12:21 CEST 2002


On Mon, 19 Aug 2002, phbobo wrote:

> > 
> > 	Le but d'une fonction de hashage est de tjs donner le même 
> > résultat pour un text donné. MD5,SHA1 ou RIPEM te donnera tjs la même 
> > valeur selon un même text donné. 
> > 
> > 	Je crois que tu as un autre problème.
> > 
> > 	http://www.php.net/manual/en/function.md5.php
> > 
> > 	Peux-tu nous montrer ton code ?
> > 
> > 	adulau
> 
> Merci à tous les deux. En fait mon code est très simple : si la variable
> password s'appelle : $passe (original n'est-ce pas ?)
> le code est
> 
> $passe=md5($passe) ;
> 
> puis mise en base de donnée.
> 
> Pour contrôler le mot de passe : 
> 
> $passe_introduit=md5($passe_introduit) ;
> $passe_en_db={mot de passe crypté mis en base de donnée}
> 
> if ( "$passe_introduit" == "$passe_en_db"){ ... } ;
> 
> Au sein d'une même session de travail (c'est à dire tant que mon
> ordinateur est allumé), le cryptage (ou le hashage) donne le résultat
> enregistré. Par contre, lorsque j'essaye le lendemain (après avoir
> éteint mon ordinateur donc) le résultat est totalement différent.
> 
> Faut-il une séquence d'initialisation pour que ce hashage soit constant
> ? Si oui, comment procéder ?
> 

	Concernant MD5, voici un bête test en Perl : 

use Digest::MD5;

$broleque = Digest::MD5->new;
$broleque->add("jeveuxlehash de cela");
$hash = $broleque -> hexdigest;

print "$hash \n";

Lancé sur deux machines (arch i386 et alpha) : 

[adulau at oops adulau]$ perl md5.pl 
77fc183d87c0839e107fa01d2e022df9 

[adulau at alphy adulau]$ perl md5.pl 
77fc183d87c0839e107fa01d2e022df9 


Et comme, on peut le voir c'est toujours le même hash. Bien entendu, dans 
ton cas tu as un problème quelque part mais pas au niveau de la méthode. 
As-tu le code source complet ou toute la partie c'est plus simple pour 
débugger ? 



	* Je ne comprends pas un truc, pourquoi c'est crypté dans la db si 
tu as déjà uniquement le hash du password ? (mis à part une attaque de 
dictionnaire sur la db)

	* N'utilises-tu pas un md5 avec un salt de départ ? 

	* Utilies-tu la fonction standard ou truc bricolé comme md5_crypt ? 
	  (qui entre () porte très mal son nom).


	Pour info MD5 ou CryptMD5 ce n'est pas la même chose et le but 
n'est pas le même. 
 

Pour info : 

MD5 ->
http://www.faqs.org/rfcs/rfc1321.html

CryptMD5 ->
http://search.cpan.org/author/LUISMUNOZ/Crypt-PasswdMD5-1.2/PasswdMD5.pm



-- 
			      Alexandre Dulaunoy -- http://www.foo.be/
  3B12 DCC2 82FA 2931 2F5B 709A 09E2 CD49 44E6 CBCD  ---   AD993-6BONE
"People who fight may lose. People  who not fight  have already lost."
							Bertolt Brecht








Plus d'informations sur la liste de diffusion Linux-bruxelles