Maison  >  Article  >  développement back-end  >  Pourquoi Password_hash génère-t-il différents hachages pour la même entrée ?

Pourquoi Password_hash génère-t-il différents hachages pour la même entrée ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-17 10:49:30827parcourir

Why Does Password_hash Generate Different Hashes for the Same Input?

Password_hash générant différents hachages pour la même entrée

Dans un système de connexion, il est courant de hacher les mots de passe pour des raisons de sécurité. Cependant, certains utilisateurs peuvent rencontrer un problème où password_hash génère une valeur de hachage différente à chaque fois pour le même mot de passe. Cela peut empêcher une vérification réussie à l'aide de password_verify().

Comprendre le comportement de Password_hash

Password_hash est conçu pour générer un sel unique pour chaque opération de hachage. Ce sel est ajouté au mot de passe avant le hachage, ce qui rend pratiquement impossible la prédiction de la valeur de hachage. Même le même mot de passe produira un hachage différent à chaque fois en raison du sel aléatoire.

Résoudre le problème de vérification

Pour vérifier le mot de passe, vous devez fournir l'original mot de passe non haché comme premier argument de password_verify(). Le deuxième argument doit être le mot de passe haché stocké dans la base de données.

Exemple de code de vérification

$password4 = 'PlaintextPassword';
$dbpassword = 'HashedPasswordFromDatabase';

if (password_verify($password4, $dbpassword)) {
    // Password verified
} else {
    // Password does not match
}

Mesures de sécurité supplémentaires

Si vous le souhaitez, vous pouvez augmenter la sécurité de password_hash en augmentant le facteur de coût. Le coût par défaut est de 10, mais vous pouvez définir une valeur plus élevée, comme 15, pour une protection supplémentaire.

$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn