【发布时间】:2015-02-25 12:28:18
【问题描述】:
我已经研究了一段时间的加密方法,到目前为止我发现 Bcrypt 是目前最好的方法之一。我还没有得到 Bcrypt 的精确工作方式。我知道解决它需要更长的时间,这就是为什么它使暴力破解如此困难。
但我不明白它是否需要其他措施(例如随机盐)来确保其安全。尤其是在阅读了 md5 以及在哈希变得安全之前几乎必须使用随机盐之后。
我在 php.com 上找到的示例代码是这样的:
$options = [ 'cost' => 12, ];
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>
我猜成本只是让它运行 12 次以加密单词“rasmuslerdorf”。并且“PASSWORD_BCRYPT”选择 Blowfish 算法。
PASSWORD_DEFAULT 和 PASSWORD_BCRYPT 之间有什么大的区别吗? 我在注册时使用默认功能加密密码是否足够。而不是将用户登录时输入的加密后的密码与数据库中的加密密码进行比较?
【问题讨论】:
-
BCrypt 不是加密。
-
每次运行
password_hash()时都会生成一个随机盐(除非您使用 options 参数修复它)。 -
没有。但要知道它会在 71 个字符后截断。
标签: php security encryption bcrypt