直到现在,我还没有使用它,我一直在使用phpass找到的哈希。然后我读了另一篇文章“forget password page, creating a generated password to email to the user.”,这里是nageeb写的stackoverflow。
摘自他的帖子:
以下是我使用的逐步方法:
用户创建密码(通过注册表) 函数创建一个随机盐,然后加密密码,在这种情况下,使用SHA256算法并使用随机创建的盐。
$ password_salt = bin2hex(mcrypt_create_iv(32,MCRYPT_DEV_URANDOM));
$ password_hash = hash('sha256',$ salt。$ password);
将$ password_hash和$ password_salt保存到users表。这些将在以后用于在用户尝试将来登录时对其进行身份验证。
当用户登录时,检查用户名/电子邮件/登录名,如果找到,则从users表中获取哈希值和salt,并将db中的密码哈希值与执行相同函数返回的哈希值进行比较作为他们的密码。
$ salt = $ user_record ['password_salt'];
$ entered_hash = hash('sha256',$ salt。$ entered_password);
这里看起来像php具有适用于所有散列需求的本机函数。这让我觉得它一定是更好的。我应该停止使用phpass并开始使用php哈希框架吗?
答案 0 :(得分:6)
简而言之:没有,如果您已经使用了phpass,请不要再使用phpass。
如果没有其他原因不使用它作为"它没有内置于PHP"然后你应该坚持使用phpass,因为它只是做了一点点而不仅仅是#34; hash"密码:
sha*
更难以用蛮力破解md5()
,它会多次调用它来模仿"价格昂贵。 你可以用PHP的散列机制来做到这一点,但这就像重新发明轮子一样。