PHP密码crypt给出了奇怪的结果

时间:2013-08-05 06:09:23

标签: php mysql crypt

我在测试登录时遇到了一个奇怪的结果。 当我使用密码“100percent”时,会显示以下输出

  

ltu1GUwy71wHk = ltu1GUwy71wHk

如果我使用密码100percenttest,我会得到相同的输出。

两个不同的密码如何产生相同的结果?

//Get login Details
$username = mysql_real_escape_string($_GET['username']);
$password = mysql_real_escape_string($_GET['password']);
$deviceID = mysql_real_escape_string($_GET['deviceID']);
$model = mysql_real_escape_string($_GET['model']);
$platform = mysql_real_escape_string($_GET['platform']);
$version = mysql_real_escape_string($_GET['version']);
$password = crypt($password, "MYSALT");

//Check login details
$loginQuery = "SELECT * FROM tblMember WHERE Username='$username'";
$loginResult = mysql_query($loginQuery);
$loggedIn = false;
$result = array();
while($row = mysql_fetch_array($loginResult))
{   
echo $row['Password'] . "=" . $password . "<BR/>";

1 个答案:

答案 0 :(得分:4)

来自documentation

  

标准的基于DES的crypt()返回salt作为输出的前两个字符。它也只使用str的前八个字符,因此字符串更长       以相同的八个字符开头将产生相同的结果(当时       使用相同的盐)。

您可以在盐的前面加上某些字符串,以强制PHP使用不同的算法(例如,$5$使用SHA-256)。我个人建议在大量的轮次中使用Blowfish;请参阅文档以获取示例。

P.S。 - 您不应该在PHP代码中使用mysql。请改用mysqli扩展名。