在PHP中存储密码的正确方法

时间:2015-12-22 06:50:26

标签: php bcrypt password-encryption php-7

Fundamental difference between Hashing and Encryption algorithms

Preferred Method of Storing Passwords In Database

http://codahale.com/how-to-safely-store-a-password/

我对两件事感到困惑。如果PHP 7.0 bcrypt提供随机盐。我们如何检索它以进行密码验证?

我理解像PBKDF2这样的关键拉伸函数,但是有人可以向我解释为什么像scrypt这样的内存密集散列算法比bcrypt更受欢迎吗?除了蛮力攻击方面。根据我在线阅读的逻辑,人们建议使用scrypt进行多次迭代。

1 个答案:

答案 0 :(得分:2)

关于bcrypt和salt: salt 的第一个问题包含在结果字符串以及 cost 中,以及散列字符串。三个字符串中的每一个都具有恒定的长度,因此可以在以后轻松检索。

有关更详尽的说明,请参阅this answer

scryptbcrypt的较新版本,需要更多RAM才能运行。 RAM要求背后的原因是基于CPU周期的加密(基于I / O)很容易使用现代GPU,多核等强制强制执行。另一方面RAM不容易扩展,因此增加了组合RAM +多个操作理论上是一种更安全的方式。

this great answer了解详情。