我有一个用PHP编写的简单登录脚本,当我运行它时,应该比较彼此的2个密码哈希值。这是我正在使用的代码;
$UUID = $_POST['UUID'];
$pass = $_POST['pass'];
// finds the same user where the uuid is the same as the one given in the post request
$query = "SELECT * FROM users WHERE UUID = '$UUID'";
$result = mysql_query($query) or die(mysql_error());
//gets the info
while($row = mysql_fetch_assoc($result)) {
$Password = $row['UUIDPass']; // gets the hashed password from the server
$salt = $row['salt']; // gets the salt from the server
}
// hashes the given password with the salt from the MYSQL server
$passcheck = hash("sha256", $pass . $salt);
// checks if the hashed password above is the same as the hash in the server
if (strcmp($Password, $passcheck))
{
echo "Correct!";
}
else
{
echo "Something went wrong!";
}
所以我在这里做的是,我正在比较用户给出的服务器密码。有什么问题?
答案 0 :(得分:2)
这里有一个例子
<?php
if(strcmp("Hello","Hello"))
{
echo "Match";
}
else
{
echo "No Match";
}
?>
说No Match
因为您的检查不正确,因为成功的返回值为0
,您必须使用
if(strcmp("Hello","Hello")==0)
也可以从手册本身确认
<强> strcmp 强>
返回&lt;如果str1小于str2,则为0; &GT;如果str1大于str2则为0,如果它们相等则为0。
答案 1 :(得分:-2)
确保为加密使用相同的哈希值 你也必须在每个阶段都使用echo。 strcmp()函数在php中运行良好。