password_verify不匹配

时间:2019-09-13 01:39:24

标签: php codeigniter-3 password-hash

我正在使用password_verify来匹配用户输入的密码和数据库中的哈希密码。

这是我用来获取用户输入的变量。

$current_password = $this->input->post('current_password');

我使用row_array()从用户表中获取一行。字段密码为varchar(256)。

$data['user'] = $this->db->get_where('user', ['email' => $this->session->userdata('email')])->row_array();

然后我使用var_dump,但它总是返回false

var_dump(password_verify($current_password, $data['user']['password']));

我不知道我的代码有什么问题。我尝试var_dump()来自dtb的哈希密码及其完全相同。

var_dump($data['user']['password']);

// Output
string(60) "$2y$10$w4wKGfA/z76.mNkfgD5gfOcnNSzWGL06CxQuw/fhukIGdZtb1HXFm"

// Vardump user input
var_dump($current_password);

// Output
string(4) '1234'

最奇怪的是,我尝试对输入进行哈希处理。

$current_password = 1234;
$hash = password_hash($current_password, PASSWORD_DEFAULT);
var_dump($hash);

// Output
string(60) "$2y$10$jRhdd.8Wse/fQ5A0mXtZfe9.n6JPeEpsLd8r06/bvL6MwVLVLbSZC"

它与数据库中的哈希密码完全不同,但是怎么可能呢?我使用此密码(1234)登录,并且可以正常使用,登录名也使用password_verify。

注意:我在trim中使用form_validation进行所有密码输入,因此用户输入的开头和结尾都没有空格。对不起,我的英语不好。

0 个答案:

没有答案