我对加密和密码等方面还很陌生,我在这里有一些可疑的代码,这似乎是失败的。我创建一个新用户并将他们的密码插入到mysql中。插入的密码是PHP crypt()总是失败?
crypt($user_input);
输出。当我取回该行并运行下面的代码来验证用户,使他们能够登录,则返回false(是的,用户输入正确的密码)。这适用于Windows机器,但不适用于Ubuntu - 该用户已在Ubuntu上创建。有什么我可以忽略的吗?
while($row = $result->fetch_object()) {
error_log("Before crypt");
if(crypt($password, $row->password) == $row->password) {
error_log("Crypt works!");
return true;
} else {
error_log("Crypt fails!");
return false;
}
}
编辑: 我已经做了一些记录,这里就是我得到:
输出继电器从隐窝($密码)是: $ 6 $ 1ySEgqi5 $ X9t7CZ4FXjjUReCu2VQF0klBY5kWQkb8LlIIk9oQ4RD4.W.1/IWMZW7/XaqDXIv8owWSpmLmvI .kAFGSbxELZ1
存储在MySQL的哈希值是:
$ $ 6/RYC6Gax $ uNhUzQPDmJy29DgUB06Ilv4Oh69D5h7NfnBSW1
他们显然不一样。这是怎么回事!?
你有没有试过确保$ row-> password包含你认为它的作用?尝试回显输入,数据库和输出值,并手动比较它们 – Anigel
好吧,所以我已经做了一些日志编辑上面^^^ – Amoeba
在这里你应该找到解决你的问题[点击](http:// stackoverflow。问题/ 5258860/php-crypt-returning-wrong-answer) 编辑:阅读第一条评论(链接) – dabe