bcrypt et sels générés aléatoirement
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.
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).
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.
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 :
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.
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!