繁体   English   中英

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

[英]How I match old and new password if I use a hash function?

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

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 密码可能很难,所以使用它,然后去购物,及时为圣诞节:)

也...

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

强调我的。

你永远不应该存储纯文本密码,而且很容易改变也不是一个正当理由。 然而,荣幸认识到需要对此采取行动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM