Программно войти в систему traccar php? - PullRequest
0 голосов
/ 13 октября 2018

Я реализовал traccar для входа в систему из этой ссылки , но почему хешируется не то же самое и всегда возвращает false?

код:

$email = $this->param['email'];
    $password = $this->param['password'];
    $qselect ='SELECT u.id as uid, u.name as uname, u.hashedPassword as hashed,u.salt,u.admin 
                FROM users u INNER JOIN users us ON us.id = u.id WHERE us.email = "'.$email.'"'; 
    $row = $this->mysqli->query($qselect)->fetch_array();
    $key = $this->hexToStr(trim($row['salt']));
    $hashed = hash_pbkdf2("sha1",$password, $key,1000,24,true); 
    echo $this->strToHex($hashed)."---".$row['hashed']."-----".$row['salt'];
    var_dump(trim($this->strToHex($hashed))==trim($row['hashed']));
    exit();              
    if ($this->strToHex($hashed)==$row['hashed']){
        $_SESSION['loginstate'] = 1;
        echo 1;
    }else{
        echo 0;
    }

результатD33DCA55ABD4CC5BC76F2BC0B4E63FE2C6F61F4C1EF2D47 --- D33DCA55ABD4CC5BC76F2BC0B4E603FE2C6F61F4C1EF2D47 ----- 000000000000000000000000000000000000000000000000bool (ложь)

Как вы можете видеть только разные только один номер, если результат хеширования из БД 63 и хеш-результат от генерации hash_pbkdf2 603,разница равна нулю, любую проблему можно исправить?

1 Ответ

0 голосов
/ 13 октября 2018

Решено этим кодом

while($row = $q->fetch_array()){
        $data = $password;
        $key = hex2bin($row['salt']);
        $hashed = hash_pbkdf2('sha1',$data, $key,1000,24,true);

        echo bin2hex($hashed)."---".$row['hashed'];
        var_dump(strtoupper(bin2hex($hashed))==$row['hashed']);

        if (strtoupper(bin2hex($hashed))==$row['hashed']){
                        //session_start();
                        //$_SESSION['email'] = $email;
                    $_SESSION['hashedpassword'] = $password; 
                    header('location:page.php');
                      }
    }

используйте bin2hex и hex2bin с хешированным верхом

...