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进行多次迭代。
答案 0 :(得分:2)
关于bcrypt
和salt: salt 的第一个问题包含在结果字符串以及 cost 中,以及散列字符串。三个字符串中的每一个都具有恒定的长度,因此可以在以后轻松检索。
有关更详尽的说明,请参阅this answer。
scrypt
是bcrypt
的较新版本,需要更多RAM才能运行。 RAM要求背后的原因是基于CPU周期的加密(基于I / O)很容易使用现代GPU,多核等强制强制执行。另一方面RAM不容易扩展,因此增加了组合RAM +多个操作理论上是一种更安全的方式。
在this great answer了解详情。