Mysql
 sql >> Base de données >  >> RDS >> Mysql

Chiffrer le mot de passe avant de le stocker dans la base de données ?

Bien que la réponse ci-dessous soit techniquement toujours correcte, php a de nouvelles recommandations concernant les algorithmes de hachage à utiliser. Leur recommandation , à partir de php> =5.5.0, est d'utiliser le password_hash et password_verify fonctions pour hacher et vérifier les mots de passe hachés. Comme avantage supplémentaire, ces fonctions incluent automatiquement un sel individualisé dans le cadre du hachage renvoyé, vous n'avez donc pas à vous en soucier explicitement.

Si vous ne vous souciez pas de récupérer la valeur réelle du mot de passe (à partir de la valeur cryptée de la base de données), vous pouvez y exécuter un algorithme de hachage unidirectionnel (tel que sha1). Cette fonction renverra une chaîne de longueur spécifique (hachage) qui ne peut pas être utilisée pour trouver la chaîne d'origine (théoriquement). Il est possible que deux chaînes différentes créent le même hachage (appelé collision), mais cela ne devrait pas poser de problème avec les mots de passe.
Exemple : $pass = sha1($_REQUEST['pass']);

Une chose, pour le rendre un peu plus sûr, est d'ajouter un sel au hachage et d'exécuter à nouveau la fonction de hachage. Cela rend plus difficile la génération malveillante d'un hachage de mot de passe puisque la valeur salée est gérée uniquement côté serveur.
Exemple : $pass = sha1(sha1($_REQUEST['pass']).sha1("[email protected]$#(%"));