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



我将用户密码以纯文本的形式存储在数据库中。所以修改密码很容易。我使用以下代码

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'");}

正如我在评论中提到的,使用bcrypt。密码可能很难,所以使用这个,然后去购物,在圣诞节也及时:)

也……

我将用户密码以纯文本形式存储在数据库中。所以很容易修改密码

<子>强调我的。

永远不要存储纯文本密码,而且很容易更改不是一个有效的理由。不过,还是要感谢你认识到有必要为此做点什么。

最新更新