如何验证密码哈希值

时间:2016-02-03 12:16:33

标签: php

我用它来哈希密码:https://github.com/ircmaxell/password_compat

$hash = password_hash($pass1, PASSWORD_BCRYPT, array("cost" => 16));

 if (password_verify($password, $hash)) {
        /* Valid */
    } else {
        /* Invalid */
    }

有效。它散列了密码。但我不知道如何在登录页面验证密码。我曾尝试过视觉,但它也不适用于会话。

3 个答案:

答案 0 :(得分:2)

你必须把哈希放在数据库中

第一步:在数据库中创建并存储哈希

$hash = password_hash($pass1, PASSWORD_BCRYPT, array("cost" => 16));

第二步:登录

$hash = // hash of user from database by unique id 
$password = // string submit by user from login form

if (password_verify($password, $hash)) {
    if (password_needs_rehash($hash, PASSWORD_BCRYPT, array("cost" => 16))) {
        $hash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 16));
        /* Store new hash in db */
    }
} else {
    /* Invalid */
}

希望它会对你有所帮助

答案 1 :(得分:0)

我过去的方式是以下步骤:

1)用户提交用户名/密码组合。

2)我看到数据库中是否存在用户名,如果是,我从数据库中提取该用户记录,如果不存在,我向用户提出一般错误(即错误的用户名/密码组合)< / p>

3)然后,我使用提交密码的password_verify函数与连接到他们尝试登录的用户的哈希密码。

4)如果是真的,他们会登录,否则我会向用户提出相同的一般错误(错误的用户名/密码组合)

答案 2 :(得分:0)

基本上你必须在登录页面中对用户放入的密码进行哈希处理,并检查数据库中保存的哈希是否等于用户在登录时发送的哈希密码。