【发布时间】:2012-01-09 12:32:25
【问题描述】:
直到现在,我还没有使用太多,我一直在使用在 phpass 找到的哈希器。然后我在nageeb 写的stackoverflow 上阅读了另一篇文章“forget password page, creating a generated password to email to the user.”。
摘自他的帖子:
这是我使用的分步方法:
用户创建密码(通过注册表单) 一个函数创建一个随机盐,然后加密密码,在这种情况下,使用 SHA256 算法并使用一个随机创建的盐。
$password_salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
$password_hash = hash('sha256', $salt . $password);
将 $password_hash 和 $password_salt 保存到 users 表中。这些将在以后尝试登录时用于对用户进行身份验证。
当用户登录时,检查用户名/电子邮件/登录名,如果找到,从用户表中获取哈希值和盐值,并将数据库中的密码哈希值与对他们输入的内容执行相同功能返回的哈希值进行比较作为他们的密码。
$salt = $user_record['password_salt'];
$entered_hash = hash('sha256', $salt . $entered_password);
这里看起来 php 具有满足所有散列需求的本机函数。这让我觉得它一定是更好的。我应该停止使用 phpass 并开始使用 php 哈希框架吗?
【问题讨论】: