Maison > Article > développement back-end > Pourquoi les fonctions password_hash() et password_verify() en PHP produisent-elles des résultats différents ?
Différence de vérification du mot de passe dans les fonctions password_hash() et password_verify() de PHP
En PHP, les fonctions password_hash() et password_verify() sont couramment utilisé pour gérer et vérifier en toute sécurité les mots de passe des utilisateurs. Cependant, certains scénarios peuvent entraîner des divergences inattendues dans la correspondance des mots de passe.
Énoncé du problème
Vous avez observé une divergence dans la correspondance des mots de passe lors de l'utilisation de password_hash() pour chiffrer les mots de passe et password_verify() pour les vérifier. Vous avez remarqué que le résultat de password_verify() ne correspond pas au mot de passe non crypté d'origine.
Comprendre l'écart
L'écart se produit en raison de la nature des algorithmes de hachage . Le hachage consiste à convertir une entrée de texte brut en une sortie de longueur fixe (appelée hachage) unique et imprévisible. Ce processus est irréversible, ce qui signifie qu'il est informatiquement impossible de récupérer l'entrée d'origine du hachage.
Lorsque vous utilisez password_hash() pour crypter un mot de passe, il génère un hachage à l'aide d'un algorithme bcrypt. Ce hachage crypté est ensuite stocké dans la base de données. Lorsqu'un utilisateur tente de se connecter, le mot de passe fourni est à nouveau haché à l'aide de password_hash() et comparé au hachage stocké.
Résoudre l'écart
Pour garantir l'exactitude du mot de passe vérification, il est crucial d’utiliser le même algorithme et la même configuration que ceux utilisés lors du hachage initial du mot de passe. Voici les étapes à suivre :
<code class="php">$password = password_hash($pwd, PASSWORD_DEFAULT); // Using default bcrypt algorithm</code>
<code class="php">if (password_verify($pwd, $password)) { // Password matches }</code>
En suivant ces étapes, vous pouvez vous assurer que les fonctions password_hash() et password_verify() fonctionnent correctement, fournissant une gestion et une vérification fiables et sécurisées des mots de passe.
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!