Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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比较从java接收的值_Java_Php_Mysql_Json - Fatal编程技术网

PHP比较从java接收的值

PHP比较从java接收的值,java,php,mysql,json,Java,Php,Mysql,Json,所以我正在处理这两个PHP文件,login.PHP和DB_Functions.PHP 其中有一个特定脚本,它从应用程序接收密码和电子邮件,发现该特定用户使用给定的电子邮件,并将所有用户详细信息存储在$user数组中,然后将其传递给login.php,以检查输入的密码是否正确,我尝试过散列密码,因为在数据库上它是用64位加密的 这是login.php(问题可能出在if($user[7]=$password)中,它不起作用) 我假设问题出在$user[7]=$this->checkhashSSHA(

所以我正在处理这两个PHP文件,
login.PHP
DB_Functions.PHP

其中有一个特定脚本,它从应用程序接收密码和电子邮件,发现该特定用户使用给定的电子邮件,并将所有用户详细信息存储在
$user
数组中,然后将其传递给login.php,以检查输入的密码是否正确,我尝试过散列密码,因为在数据库上它是用64位加密的

这是
login.php
(问题可能出在
if($user[7]=$password)
中,它不起作用)

我假设问题出在
$user[7]=$this->checkhashSSHA($asalt,$password)行。
期待解决方案。

问题出在这里

if($user[7] == $password){
    ...
}
您正在将散列密码(
$user[7]
)与用户的原始密码(
$password
)进行比较,两者不匹配。首先,对原始密码执行与类方法相同的哈希运算(
checkhashSSHA($salt$password)
),然后进行比较,如下所示:

解决方案:

// assuming that checkhashSSHA is public method
$hashed_password = $db->checkhashSSHA($user[6], $password);

if($user[7] == $hashed_password){
    // password match
}
// assuming that checkhashSSHA is public method
// no need to hash the password again
// $hashed_password = $db->checkhashSSHA($user[6], $password);

// $user[5] contains user's hashed password
// $user[7] contains the hashed password from user's input
if($user[5] == $user[7]){
    // password match
}
重新编辑:

// assuming that checkhashSSHA is public method
$hashed_password = $db->checkhashSSHA($user[6], $password);

if($user[7] == $hashed_password){
    // password match
}
// assuming that checkhashSSHA is public method
// no need to hash the password again
// $hashed_password = $db->checkhashSSHA($user[6], $password);

// $user[5] contains user's hashed password
// $user[7] contains the hashed password from user's input
if($user[5] == $user[7]){
    // password match
}

如果你认为那条线是问题所在。。。为什么不
var_dump($user[7])
变量转储($password)?这会返回这些变量的值吗?如果会的话,我在哪里能看到呢?(PHP初学者)$user[7]是散列的,因为在DB_函数中,它被散列并作为原始密码发送,@DanielNetzer
$user[7]
包含散列密码。查看DB_Function.php文件,
$user[7]=$this->checkhashSSHA($asalt,$password)。请尝试我建议的解决方案。非常感谢,Rajdeep,我刚刚意识到,对密码进行哈希运算时,它不会对密码进行解密,而是使其成为可读且可比较的密钥。非常感谢。这带来了一个新的问题,似乎不管我在用户界面中输入什么密码,用户都可以登录。。。看起来他们正在对数据库中的相同值进行哈希和比较。您使用哪种方法对密码进行哈希
检查hashSSHA
hashSSHA