使用crypt值来检索用户密码

时间:2014-10-26 17:15:15

标签: php hash

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

    $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";
       }

2 个答案:

答案 0 :(得分:1)

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

例如MySql

的情况
  

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

答案 1 :(得分:-1)

您可能不允许nuff放置数据库中的完整哈希值。你有没有像这样设置varchar 40或somethinng?如果是,允许255 varchar,它应该工作