我对加密和密码等很陌生,而且我这里有一些可疑的代码似乎失败了。我创建了一个新用户并将他们的密码插入到 mysql 中。插入的密码是输出
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;
}
}
编辑:我做了一些记录,这就是我得到的:
crypt($password) 的输出为:$6$1ySEgqi5$X9t7CZ4FXjjUReCu2VQF0klBY5kWQkb8LlIIk9oQ4RD4.W.1/IWMZW7/XaqDXIv8owWSpmLmvI.kAFGSbxELZ1
存储在 MySQL 中的哈希是:
$6$/RYC6Gax$uNhUzQPDmJy29DgUB06Ilv4Oh69D5h7NfnBSW1
他们显然不一样。这是怎么回事!?