php'自己的哈希框架比phpass好吗?


Is php's own hash framework better than phpass

直到现在,我还没有使用它,我一直在使用在phpass找到的散列器。然后我读了另一篇文章,"忘记密码页面,创建一个生成的密码给用户发电子邮件。",在这里的stackoverflow上,由nageeb写的。

节选自他的文章:

下面是我使用的一步一步的方法:

用户创建密码(通过注册表单)一个函数创建一个随机的盐,然后加密密码,在本例中,使用SHA256算法并使用随机创建的盐。

$password_salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));

$password_hash = hash('sha256', $salt。密码)美元;

将$password_hash和$password_salt保存到users表中。这些将在以后用户尝试登录时用于对其进行身份验证。

当用户登录时,检查用户名/电子邮件/登录,如果找到,从用户表中获取哈希值和盐,并将数据库中的密码哈希值与对他们输入的密码执行相同函数返回的哈希值进行比较。

盐= user_record美元[' password_salt '];

$entered_hash = hash('sha256', $salt。美元entered_password);

这里看起来php有满足所有哈希需求的本地函数。这让我觉得它一定是更好的一个。我应该停止使用phpass并开始使用php哈希框架吗?

总之:no,如果您已经在使用phpass,请不要停止使用它。

如果没有其他理由不使用它作为"它不是PHP内置的",那么你应该坚持使用phpass,因为它不仅仅是"散列"密码:

  • 它尝试使用河豚进行哈希,因为它比sha*的计算成本更高,因此更难用蛮力破解
  • 如果它不得不回到md5(),它会多次调用它来"模拟"昂贵。

你可以用PHP的散列机制来做,但这就像重新发明轮子。