SHA 512 散列和验证

SHA 512 hashing and verifying

好吧,我正在尝试使用 SHA 512 验证密码,但无论如何它仍然是 returns 错误,因为哈希检查不正确。

注册时生成哈希

$hashed = password_hash(hash('sha512', $password), PASSWORD_DEFAULT);

为了验证(登录时),我使用简单的

public function isValidLogin($username, $password) {
    $sql = $this->connect();
    $sql->real_escape_string($username);
    $sql->real_escape_string($password);

    $res = $sql->query("SELECT password FROM users WHERE name='".$username."'");

    if ($res->num_rows >= 1) {
        while($row = $res->fetch_assoc()) {
            if (password_verify(hash('sha512', $password), $row['password'])) {
                return true;
            }
        }
    }

    return false;
}

在注册时尝试使用此代码而不是您的代码。

 $hashed = hash("sha512", $password);
// original password
$_password = 'bluebeans123';

$password = hash('sha512', $_password);
$password = password_hash($password, PASSWORD_DEFAULT);

var_dump($password);

$verify = hash('sha512', $_password);
$verify = password_verify($verify, $password);

var_dump($verify);

详细示例:http://wiki.travisfont.com/PHP:Passwords(hash_w/_SHA512)