散列密码的最佳方法是什么?我知道一种方法可以很好地完成工作,但我想知道是否有更好的方法在 PHP 7+ 中对密码进行哈希处理password_hash()。 password_hash 足够好吗?
<?php
password_hash('PASSWORD HERE', PASSWORD_DEFAULT);
?>
“我想知道在 PHP 7+ 中是否有比 password_hash 更好的方法来哈希密码。password_hash 足够好吗?”
是的,它足够安全,是的,还有更好/更安全的方法。从 PHP 7.2 开始,Argon2 是新实现的(哈希)方法的一部分,该方法赢得了密码哈希竞赛如果您想将 PHP 版本升级到 7.2,它提供了更可靠的方法。
The wiki关于这一点:
Argon2 是密码哈希竞赛推荐的密码哈希算法,是一种用于安全哈希密码的现代算法。 Argon2 解决了现有算法的几个关键缺点,因为它专为实现最高内存填充率而设计,并有效使用多个计算单元,同时仍然提供对权衡攻击的防御。与仅采用单个成本因子的 Bcrypt 不同,Argon2 由三个不同的因子参数化:
- 定义算法的内存使用情况的内存成本
- 定义算法执行时间和迭代次数的时间成本
- 以及并行系数,定义并行线程的数量
您还可以查看以下链接,其中包含有关 Libsodium 的更多信息https://paragonie.com/blog/2016/02/how-safely-store-password-in-2016
手册上http://php.net/manual/en/function.password-hash.php还包含有关信息PASSWORD_ARGON2I
.
变更日志指出:
7.2.0 添加了对使用 PASSWORD_ARGON2I 的 Argon2 密码的支持。
如果升级到 PHP 7.2 不是一个选择,那么您可以增加“成本”。
拉自这个答案并来自相关帖子在 PHP 5.5 中生成密码哈希并设置成本选项,我引用:
将cost参数增加1,计算哈希值所需的时间加倍。成本参数是迭代次数的对数(以 2 为底),这意味着:
$迭代= 2 ^ $成本;
您还可以在 Stack Overflow 上查阅其他问答:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)