6 php password-protection php-password-hash php-7
哈希密码的最佳方法是什么?我知道一种做得很好的方法,但我想知道是否有更好的方法来在PHP 7+中使用哈希密码password_hash().password_hash足够好吗?
<?php
password_hash('PASSWORD HERE', PASSWORD_DEFAULT);
?>
Run Code Online (Sandbox Code Playgroud)
"我想知道是否有一种更好的方法可以在PHP 7+中密码密码然后使用password_hash.密码是否足够好?"
是的,它足够安全,是的,有更好/更安全的方式.由于PHP 7.2,Argon2是赢得了一个新实施(散列)方法的一部分密码散列比赛它提供了一个更强大的方法,你要想让你的PHP的版本升级到7.2.
关于此的维基说:
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,可以将计算哈希值所需的时间加倍.cost参数是迭代计数的对数(base-2),表示:
$ iterations = 2 ^ $ cost;
您还可以在Stack Overflow上查询此其他问答: