PASSWORD_DEFAULT vs PASSWORD_BCRYPT

2019-02-11 22:33发布

What is the difference between PASSWORD_DEFAULT and PASSWORD_BCRYPT? Do they both use Blowfish encryption algorithm? What is cost in an algorithm? How to set up password_hash in PHP produce a 255-hash length instead of 60?

4条回答
相关推荐>>
2楼-- · 2019-02-11 23:06

Another good example is shown here: https://wwphp-fb.github.io/faq/security/passwords/

Currently PASSWORD_DEFAULT is PASSWORD_BCRYPT and as language and cryptography progress there will be different types of algorithms supported. PASSWORD_DEFAULT will get replaced with that new type of algorithm (for example Argon2). Good choice is to always use the PASSWORD_DEFAULT.

查看更多
神经病院院长
3楼-- · 2019-02-11 23:12

Currently PASSWORD_BCRYPT is the only algorithm supported (using CRYPT_BLWFISH), therefore there is currently no difference between PASSWORD_DEFAULT and PASSWORD_BCRYPT. The purpose of PASSWORD_DEFAULT is to allow for the inclusion of additional algorithms in the future, whereupon PASSWORD_DEFAULT will always be used to apply the strongest supported hashing algorithm.

Cost is related to the number of iterations of the algorithm that are executed, and affects the speed of calculation as well as the hash value generated. Higher costs take longer to execute, slowing brute force attacks

查看更多
叛逆
4楼-- · 2019-02-11 23:20

Per the documentation PASSWORD_DEFAULT is meant to be future proof

From the docs:

PASSWORD_DEFAULT - Use the bcrypt algorithm (default as of PHP 5.5.0). Note that this constant is designed to change over time as new and stronger algorithms are added to PHP. For that reason, the length of the result from using this identifier can change over time. Therefore, it is recommended to store the result in a database column that can expand beyond 60 characters (255 characters would be a good choice).

查看更多
一夜七次
5楼-- · 2019-02-11 23:22

There is no difference between PASSWORD_DEFAULT and PASSWORD_BCRYPT for the moment (http://www.php.net/manual/en/password.constants.php). The cost will depend on the number of rounds the hash will be applied. It is also explained in the link above. If you want to increase the security of your hash, you better increase the number of rounds instead of the length.

查看更多
登录 后发表回答