【问题标题】:using crypt value to retrieve user password使用 crypt 值检索用户密码
【发布时间】:2014-10-26 17:15:14
【问题描述】:

当用户在我的应用程序中注册时,我使用 crypt 对用户密码进行哈希处理并将哈希密码存储到我的数据库中。 然后,当用户登录我的应用程序时,我从我的数据库中检索加密密码,并将新的哈希密码与初始哈希密码进行比较。 我的问题是我从来没有得到相同的价值。 我读过使用带有初始密码的盐来提高安全性。 我的代码如下:

    $sql = "SELECT password FROM users WHERE mail =:mail";
    $sth = $dbh->prepare($sql);
    $sth->execute(array(':mail'=>$mail));
    $result = $sth->fetchAll(PDO::FETCH_ASSOC);
    if (count($result) == 1){
       $interne = $result[0]['password'];
       $crypt = crypt($pass, $interne);
       if($interne === $crypt){
        echo "loggedin";
       }

【问题讨论】:

    标签: php hash


    【解决方案1】:

    尝试使用 varchar 来存储哈希,因为 char 可能会被空格填充。

    例如MySql就是这种情况:

    当 CHAR 值被存储时,它们用空格右填充到指定的长度。

    【讨论】:

      【解决方案2】:

      您可能不允许在数据库中放置完整的哈希值。您是否设置了 varchar 40 或类似的设置?如果是,则允许 255 varchar,它应该可以工作

      【讨论】:

      • 是的,我做了 password=char(255)
      猜你喜欢
      • 2010-11-04
      • 1970-01-01
      • 2022-06-12
      • 1970-01-01
      • 2012-05-14
      • 2012-12-07
      • 2018-12-02
      • 2013-01-12
      • 2015-06-03
      相关资源
      最近更新 更多