【发布时间】:2013-07-01 14:13:48
【问题描述】:
我希望将 BCrypt 实现到 Web 应用程序中,但是我对如何合并/更改工作/迭代/轮次的级别感到迷茫:
从 PHP 5.3.0 开始,PHP 包含自己的实现。
我知道使用$pw = crypt($password); 会自动为我创建一个随机盐,我可以将$pw 存储在数据库中。
我知道我可以使用检查密码有效性
if ( crypt($user_input, $pw) == $pw) ) {
// password is valid
} else {
// password is not valid
}
我知道 Bcrypt 之所以这么好,是因为 bcrypt 是基于 Blowfish crypt 的自适应函数。随着时间的推移,可以增加轮数以使其变慢,因此尽管计算技术更快,但它仍然可以抵抗暴力攻击。
所以我的问题是,如何减慢或加快密码有效性检查?或者以另一种方式,如何设置创建哈希密码所需的默认迭代次数?
【问题讨论】:
-
crypt()函数将不会为您生成随机盐。不过,PHP 5.5 有一个名为 password_hash() 的新函数,它将处理所有内容并自动生成安全的盐。在内部它将调用 crypt() 函数。请改用password_hash(),对于早期的PHP 版本也存在compatibility pack。
标签: php cryptography bcrypt crypt