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;)