password_verify没有返回true

时间:2016-05-10 13:09:45

标签: php hash

我是新手,还在学习,根据建议我用bcrypt替换了我的md5加密密码,但是password_verify由于某种原因没有返回true。

来自控制器:

[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];

在模型中:

$old_pass = $this->input->post('old_password');

有人可以告诉我如何解决它吗?

干杯, 巴亚

编辑:

我做的第一件事就是使用新加密更新数据库上的密码,方法是通过edit_member函数编辑用户(这样我就可以显示如何在数据库上更新密码):

function edit_member($user_info, $old_pass)
{
    $id_user = $this->session->userdata('id_user');
    $user_pass = $this->db->query("SELECT password FROM membros WHERE id_user='" . $id_user . "'")->result();
    if (password_verify($old_pass, $user_pass[0]->password)) {
        $this->db->where('id_user', $id_user);
        $this->db->update('membros', $user_info);
        redirect('/cpanel');
    } else {
        //redirect('/edit_account/edit');
        print_r("A password não coincide");
        echo anchor('/cpanel', 'Voltar');
    }
    /*print_r($user_pass[0]->password);
    print_r($old_pass);*/
}

2 个答案:

答案 0 :(得分:1)

如果password_verify没有返回true,那是因为:

  1. 您没有将旧密码重新哈希到bcrypt; OR
  2. 您的密码存储不正确; OR
  3. 您输入的密码错误
  4. 我的猜测是#1,在这种情况下,您需要更新登录逻辑以执行以下操作:

    1. MD5输入密码,检查这是否与数据库中的哈希匹配。如果是,请使用password_hash更新数据库中的哈希值。
    2. 针对用户密码,针对数据库中的哈希运行password_verify
    3. 我的许多遗留系统都有点像这样工作,随着用户密码的更新而更新(大约6个月后,我倾向于向他们发送提醒,更改密码并禁用旧的MD5密码)。

答案 1 :(得分:0)

显然这是因为密码已经用

更改为数据库

password_hash($ password,PASSWORD_BCRYPT)。“\ n”

(我从其他人的帖子中复制过)

一旦我删除了。“\ n”位就开始工作了(我不知道这是做什么的,就像我说的那样,我有点抄袭别人 - .-)

感谢所有看过这个问题的人,抱歉浪费你的时间-.-

干杯, 巴亚