Maison  >  Article  >  développement back-end  >  Le sel généré aléatoirement affecte-t-il la vérification du mot de passe avec bcrypt ?

Le sel généré aléatoirement affecte-t-il la vérification du mot de passe avec bcrypt ?

DDD
DDDoriginal
2024-10-20 17:12:02557parcourir

Does Randomly Generated Salt Affect Password Verification with bcrypt?

bcrypt et sels générés aléatoirement

Contexte

bcrypt est un algorithme de hachage de mot de passe qui utilise le salage pour améliorer la sécurité. Le salage implique l'incorporation de données aléatoires dans le hachage du mot de passe, garantissant que même des mots de passe identiques produiront des résultats hachés différents.

Génération et hachage de sel

La classe PHP fournie comprend une fonction appelée genSalt() qui génère un sel aléatoire en utilisant la fonction openssl_random_pseudo_bytes(). Ce sel est ensuite utilisé dans le cadre du processus de hachage bcrypt dans la fonction genHash().

La fonction genHash() prend un mot de passe et le combine avec le sel généré aléatoirement. Le hachage résultant est un mélange du mot de passe d'origine, du sel et d'un préfixe spécifique à l'algorithme ($2y$) qui indique l'algorithme bcrypt et ses paramètres (par exemple, le facteur de charge de travail).

Vérification du mot de passe

Pour vérifier un mot de passe, la fonction verify() fournie compare le mot de passe saisi avec le hachage stocké. Pour ce faire, il concaténe le mot de passe fourni avec le hachage stocké et utilise la fonction crypt() pour le hacher à nouveau.

Comprendre la logique de comparaison de hachage

La clé pour comprendre pourquoi le sel généré aléatoirement n'affecte pas la vérification du mot de passe consiste à examiner le format du hachage stocké. Le hachage se compose de deux parties principales :

  1. Un préfixe d'algorithme ($2y$), un facteur de charge de travail (par exemple, 10) et du sel (par exemple, abcdefg...)
  2. Le mot de passe haché

Lorsque la fonction verify() hache le mot de passe fourni avec le hachage stocké, elle utilise uniquement la partie sel comme entrée. Cela garantit que le sel est incorporé dans le processus de vérification.

Conclusion

En résumé, alors que bcrypt génère des sels aléatoires pour garantir la sécurité du mot de passe, le processus de vérification du mot de passe ne prend en compte que la partie sel de le hachage stocké. Cela permet de vérifier le mot de passe fourni par rapport au hachage stocké, même si le sel est généré de manière aléatoire.

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