Comme nous l’avons vu dans le billet sur la sauvegarde des mots de passe, l’utilisation d’une fonction de chiffrage (hashing) tel que MD5 peut être très utile. Nous allons maintenant voir comment chiffrer les mots de passe avec crypt, vous permettant ainsi d’assurer l’évolution de votre sécurité.
Description
crypt est disponible dans PHP depuis la version 3, elle propose de chiffrer ce que vous lui passer avec l’algorithme standard Unix DES, mais pas seulement, vous pouvez aussi lui spécifier un autre algorithme à utiliser. Ainsi vous pourrez utiliser Blowfish ou MD5 sur les systèmes récents.
crypt prend 2 paramètres (string crypt ( string str [, string salt] )) :
Pour définir l’algorithme à utiliser, vous devez utiliser le salt :
CRYPT_STD_DES: chiffrement DES standard à 2 caractèresCRYPT_EXT_DES: chiffrement DES étendu à 9 caractèresCRYPT_MD5: chiffrement MD5 à 12 caractères commençant par $1$CRYPT_BLOWFISH: chiffrement Blowfish à 16 caractères commençant par $2$ ou $2a$
Exemple :
Source: http://fr.php.net/crypt
Utilisation
Dans le cas d’une utilisation de crypt pour chiffrer ses mots de passe, vous pouvez suivre l’exemple suivant :
getPassword($sonlogin); // on récupère le password crypté de l’utilisateur en base de données
if(crypt($lepasswordpropose, $vraicryptpassword) == $vraicryptpassword) {
echo “Le password est correct”;
}
else {
echo “Le password est incorrect”;
}
?>
Comme la version chiffrée du mot de passe contient le salt, crypt connaît donc automatiquement l’algorithme à utiliser pour comparer les mots de passe.
L’avantage est que si un nouvel algorithme de chiffrage venait à sortir, plus performant ou plus sure, il suffira de changer le salt à l’inscription, et tous les nouveaux mots de passe seront chiffrés et vérifiés avec cet algorithme.
