Sal*_*ali 10 php security passwords hash php-password-hash
阅读有关PHP 5.5 的新password_hash函数的文档,我想知道,默认算法是什么:
password_hash("rasmuslerdorf", PASSWORD_DEFAULT);
Run Code Online (Sandbox Code Playgroud)
有关它的文档没有说明这一点:http://www.php.net/manual/en/password.constants.php
hek*_*mgl 10
我已经了解了PHP源代码.它默认为PHP5.5中的bcrypt.
来自ext/standard/php_password.h line 31:
#define PHP_PASSWORD_DEFAULT PHP_PASSWORD_BCRYPT
Run Code Online (Sandbox Code Playgroud)
这已在password_hash()的文档中更新,并将在常量页面中更新(我刚刚提交了大约一个小时左右的文档更改).
从更新的常量页面(尚未生效,但今天晚些时候):
可用算法:
PASSWORD_BCRYPT (integer)
PASSWORD_BCRYPT用于使用该CRYPT_BLOWFISH算法创建新的密码哈希.这将始终导致使用"$ 2y $"crypt格式的哈希值,该格式总是60个字符宽.
支持的选项:
salt - 在散列密码时手动提供盐.请注意,这将覆盖并防止自动生成salt.
如果省略,则每个密码哈希值都会通过password_hash()生成随机盐.这是预期的操作模式.
成本 - 表示应该使用的算法成本.可以在crypt()页面上找到这些值的示例.
如果省略,将使用默认值10.这是一个很好的基准成本,但您可能需要考虑根据您的硬件增加它.
PASSWORD_DEFAULT (integer)如果未提供算法,则用于散列的默认算法.当支持更新,更强大的哈希算法时,这可能会在较新的PHP版本中发生变化.
值得注意的是,随着时间的推移,这个常数会(并且可能会)发生变化.因此,您应该知道生成的哈希的长度可以更改.因此,如果使用PASSWORD_DEFAULT,则应该以可以存储超过60个字符的方式存储生成的哈希值(255是推荐的宽度).
此常量的值:
- PHP 5.5.0 - PASSWORD_BCRYPT
至于何时以及如何PASSWORD_DEFAULT更新,这在password_hash()文档页面上:
注意:此功能对受支持算法的更新(或对默认算法的更改)必须遵循以下规则:
在成为默认值之前,任何新算法必须在核心中至少有1个完整版本的PHP.因此,例如,如果在5.5.5中添加了新算法,则在5.7之前它将不符合默认条件(因为5.6将是第一个完整版本).但是如果在5.6.0中添加了不同的算法,它也有资格默认为5.7.0.
默认值应仅在完整版本(5.6.0,6.0.0等)上更改,而不在修订版本上更改.唯一的例外是在当前默认情况下发现严重安全漏洞的紧急情况.
| 归档时间: |
|
| 查看次数: |
2965 次 |
| 最近记录: |