2009-10-26 5 views

Répondre

8

Je ne sais pas ce que vous entendez par "différent", mais la première ligne:

$hassh = base64_encode(sha1($word)); 
var_dump($hassh); 

vous obtient:

string 'YWFmNGM2MWRkY2M1ZThhMmRhYmVkZTBmM2I0ODJjZDlhZWE5NDM0ZA==' (length=56) 

Lorsque la seconde:

$hassh = hash('sha1', $word); 
var_dump($hassh); 

Vous obtenez:

string 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d' (length=40) 


Alors, tout d'abord, je ne suis pas sûr que vous vouliez utiliser base64_encode: ne semble pas être vraiment utile ici, et est probablement pas nécessaire: SHA1 retourne déjà une chaîne:

$word = 'hello'; 
var_dump(sha1($word)); 

vous permet de bénéficier:

string 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d' (length=40) 

Excepts pour cela, ces deux lignes, avec l'algorithme SHA1, obtenir la même chose. La différence est probablement que hash peut fonctionner avec beaucoup d'algorithmes de hachage.

Oh, et aussi:

  • sha1 existe depuis PHP 4
  • hash existe seulement depuis PHP> = 5.1.2
+0

Merci Pascal, j'ai eu des soupçons sur le code aussi, car l'encodage de base afaik est utilisé pour passer du binaire aux caractères, donc plus utilisé avec le cryptage. Vos préoccupations étaient-elles similaires? – Chris

+1

Vous êtes les bienvenus :-) Vous ne savez pas exactement ce que vous voulez dire, mais par défaut, sha1 renvoie déjà une chaîne (si le second paramètre n'est pas défini sur true); donc, pas besoin d'encodage base64 –

+0

Ça a l'air bien, vous m'avez déjà réglé. – Chris

Questions connexes