Dans les applications, il est souvent nécessaire de crypter et de stocker les mots de passe des utilisateurs. Enregistrer les mots de passe en texte clair présente un inconvénient : Une fois divulgué, cela entraînera facilement de grandes pertes, et peut également entraîner des pertes pour les utilisateurs et les mots de passe d'autres sites Web (car la plupart des utilisateurs utilisent le même compte et le même mot de passe sur la plupart des sites Web). ).
Cette fuite peut provenir de deux aspects : des pirates informatiques et du personnel d'exploitation et de maintenance commettant un vol.
Afin d'éviter toute fuite du texte en clair du mot de passe, nous devons crypter de manière irréversible le champ du mot de passe enregistré dans la base de données. Pour être précis, il est crypté puis enregistré dans la base de données.
Les algorithmes de chiffrement irréversibles couramment utilisés incluent MD5 et SHA-1.
Dans NodeJS, ils sont extrêmement faciles à utiliser, il suffit d'utiliser le package crypto
intégré officiel :
var clearText = '123456'; // MD5 Hash require('crypto').createHash('md5').update(clearText).digest('hex'); // 'e10adc3949ba59abbe56e057f20f883e' // SHA-1 Hash require('crypto').createHash('sha1').update(clearText).digest('hex'); // '7c4a8d09ca3762af61e59520943dc26494f8941b'
Quand Lorsqu'un utilisateur s'enregistre, le mot de passe soumis par l'utilisateur est d'abord crypté de manière irréversible, puis le texte chiffré est stocké dans la base de données.
Lorsqu'un utilisateur se connecte, le mot de passe soumis par l'utilisateur est d'abord crypté de la même manière, puis comparé au texte chiffré de la base de données pour déterminer si le mot de passe est correct.
Théoriquement, il existe d'innombrables mots de passe correspondant à la même valeur de hachage, mais ne vous inquiétez pas trop du risque d'être touché, car en comparaison, votre serveur Web et votre base de données peuvent être vulnérables aux inondations. les attaques s'effondrent en premier.
Recommandations associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!