我有一个包含表单的页面。我通过AJAX将数据传递给PHP脚本,该脚本在后台执行某些操作,并返回一个JSON编码的数组。
{"type": , "user":, "loginKey":}
类型是从1到3的值,user是它的用户名,loginKey是由一个函数创建的。
PHP执行以下操作:获取用户的输入,对其进行清理,通过计算行数来检查用户是否存在于数据库中。如果数据库中有用户,则运行以下散列算法
function hashing($user, $pass, $mail){
$pass=md5($pass);
$pass=md5($pass.$user);
$pass=md5($pass.$mail);
return $pass;
}
数据被传递回我的函数,检查散列值是否与数据库中的值相对应,然后继续创建loginKey
$key=md5($pass.date("Y-m-d H:i:s"));
其中$pass
是我们从函数中获得的散列值。在此之后,它用这个新的loginKey
更新我的数据库,最后返回到我的JSON编码数组中打印。
这里的问题是我的函数并不总是有效的。有时它会返回0,即使它用一个好的值更新了数据库中的loginKey (更新后只有return $key;
)。
解析的
我使用Argon2
散列类型将散列从MD5
更改为password_hash()
,现在它每次都可以工作。似乎md5散列有一个bug,因为我没有在我的代码中更改任何其他东西。
发布于 2018-07-07 02:09:20
解析的
我将散列从MD5改为使用Argon2散列类型的password_hash(),现在它每次都可以工作。似乎md5散列有一个bug,因为我没有在我的代码中更改任何其他东西。
https://stackoverflow.com/questions/51214500
复制相似问题