Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果我使用哈希函数,我如何匹配旧密码和新密码?_Php_Security_Password Encryption - Fatal编程技术网

Php 如果我使用哈希函数,我如何匹配旧密码和新密码?

Php 如果我使用哈希函数,我如何匹配旧密码和新密码?,php,security,password-encryption,Php,Security,Password Encryption,我将用户密码作为纯文本存储在数据库中。因此,更改密码很容易。我用这个密码 while($row = mysql_fetch_array($result)) { if($row['Password']==$opass) mysql_query( "UPDATE information SET Password='$pass' WHERE Username='$name'" ); } 首先,我检查用户是否正确输入了旧密码($opass),然后我允许他将其更改为新密码

我将用户密码作为纯文本存储在数据库中。因此,更改密码很容易。我用这个密码

while($row = mysql_fetch_array($result)) {
  if($row['Password']==$opass)
    mysql_query(
      "UPDATE information SET Password='$pass' WHERE Username='$name'"
    );
}

首先,我检查用户是否正确输入了旧密码(
$opass
),然后我允许他将其更改为新密码(
$pass
)。我想我可以检查旧密码,因为我将它存储为纯文本。但是如果我使用任何哈希算法,这个
if($row['Password']==$opass)
代码怎么工作?我认为
$opass
$row['Password']
将不一样。

只需使用等效的散列函数对用户输入的密码进行散列,并将其与数据库中存储的密码进行比较

while($row = mysql_fetch_array($result)){
 if($row['Password']==yourOneWayPasswordHashingFunction($opass))
  mysql_query("UPDATE information SET Password='$pass' WHERE Username='$name'");}
正如我在评论中提到的,使用。密码可能很难,所以使用它,然后去购物,在圣诞节前也一样:)

还有

我将用户密码作为纯文本存储在数据库中因此更改密码很容易

我的


您永远不应该存储纯文本密码,而且很容易更改密码并不是一个有效的理由。不过,认识到需要对此做些什么,这是值得称赞的。

只需使用等效的哈希函数对用户输入的密码进行哈希运算,并将其与数据库中存储的密码进行比较即可

while($row = mysql_fetch_array($result)){
 if($row['Password']==yourOneWayPasswordHashingFunction($opass))
  mysql_query("UPDATE information SET Password='$pass' WHERE Username='$name'");}
正如我在评论中提到的,使用。密码可能很难,所以使用它,然后去购物,在圣诞节前也一样:)

还有

我将用户密码作为纯文本存储在数据库中因此更改密码很容易

我的


您永远不应该存储纯文本密码,而且很容易更改密码并不是一个有效的理由。不过,感谢您认识到需要对此做些什么。

您能为我写几行代码吗?我只需要看看这个概念。@user1902462当然,我用一个函数包装了
$opass
变量,您需要编写这个函数。让它包装一个PHP的实现可能会很好。好吧,这个检查只适用于坏的(未加盐的)散列函数;)@ThiefMaster它可以根据密码构建salt;)你能给我写几行代码吗?我只需要看看这个概念。@user1902462当然,我用一个函数包装了
$opass
变量,您需要编写这个函数。让它包装一个PHP的实现可能会很好。好吧,这个检查只适用于坏的(未加盐的)散列函数;)@ThiefMaster它可以根据密码构建salt;)