L'exemple ci-dessous fonctionne en langage PHP et est inspiré de la fonction d'OsCommerce.
Attention, le cryptage est à sens unique et il n'est pas possible de retrouver un mot de passe perdu!
La facon de vérifier le mot de passe est d'extraire le salt du mot de passe crypté, de réencrypter le mot de passe puis comparer les deux.
Ici, le salt est générée avec un nombre aléatoire et hashé. L'avantage est donc que deux mots de passe identiques auront un résultat crypté différent.
Aussi, on utilisera la fonction de hashage SHA1, qui retourne un nombre hexadécimal d'une taille de 40 caractères. On préfèrera le SHA1 au MD5 qui est un peu trop utilisé.
Voici le code PHP: une fonction d'encryptage, encrypt_password() et une fonction de comparaison du mot de passe, match_password()
<?php function encrypt_password($plain) { $password = rand(10, 9999999999); $salt = substr(sha1($password), 0, 2); $password = sha1($salt . $plain) . $salt; return $password; } function match_password($password, $plain) { $salt = substr($password, strlen($password)-2, strlen($password)); return $password == sha1($salt . $plain) . $salt; } echo 'Password encrypted: '.encrypt_password('motdepasse'); echo '<BR />Password match?'; var_dump(match_password('8570faf6d4c0ea6310751ad34c59339ab582d5b73f', 'motdepasse')); ?>