bcrypt and Randomly Generated Salts
bcrypt is a password hashing algorithm that utilizes salting to enhance security. Salting involves incorporating random data into the password hash, ensuring that even identical passwords will produce different hashed results.
The provided PHP class includes a function called genSalt() that generates a random salt using the openssl_random_pseudo_bytes() function. This salt is then used as part of the bcrypt hashing process in the genHash() function.
The genHash() function takes a password and combines it with the randomly generated salt. The resulting hash is a mixture of the original password, salt, and an algorithm-specific prefix ($2y$) that indicates the bcrypt algorithm and its parameters (e.g., workload factor).
To verify a password, the provided verify() function compares the entered password with the stored hash. It does this by concatenating the supplied password with the stored hash and using the crypt() function to hash it again.
The key to understanding why the randomly generated salt does not affect the password verification is to examine the format of the stored hash. The hash consists of two main parts:
When the verify() function hashes the supplied password with the stored hash, it uses only the salt portion as its input. This ensures that the salt is incorporated into the verification process.
In summary, while bcrypt generates random salts to ensure password security, the password verification process takes into account only the salt portion of the stored hash. This allows the provided password to be verified against the stored hash, even though the salt is randomly generated.
Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.
Copyright© 2022 湘ICP备2022001581号-3