【问题标题】:Is php's own hash framework better than phpassphp自带的hash框架比phpass好吗
【发布时间】: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_pa​​ssword);

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

【问题讨论】:

    标签: php hash


    【解决方案1】:

    简而言之:,如果您已经在使用 phpass,请不要停止使用它。

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

    • 它尝试使用河豚进行散列,因为它的 more expensive to computesha* 更难用蛮力破解
    • 如果它必须退回到md5(),它会多次调用它来“模仿”昂贵。

    您可以使用 PHP 的哈希机制来做到这一点,但这就像重新发明轮子一样。

    【讨论】:

    • 谢谢。我阅读了您提到的链接,它基本上说明了一切 - phpass 使用河豚,这就是密码的方式。
    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 2011-05-24
    • 2011-08-01
    • 2016-07-17
    • 1970-01-01
    相关资源
    最近更新 更多