Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security I';我在使用bcrypt时遇到登录问题_Security_Encryption_Hash_Passwords_Bcrypt - Fatal编程技术网

Security I';我在使用bcrypt时遇到登录问题

Security I';我在使用bcrypt时遇到登录问题,security,encryption,hash,passwords,bcrypt,Security,Encryption,Hash,Passwords,Bcrypt,如果这是一个愚蠢的问题,或者是在错误的地方,我会提前道歉。这是我第一次来这里。我一整天都在忙这个,似乎无法解决这个问题。我以前从未使用过bcrypt,但我遵循了一些在线教程,我能够创建一个功能正常的注册页面。 以下是加密代码: $password = password_hash($password, PASSWORD_DEFAULT)."\n"; 注册页面工作正常,密码在数据库中加密。据我所知,在登录页面中,我们使用Select语句获取用户输入的用户名/电子邮件的哈希密码,然后使用passwo

如果这是一个愚蠢的问题,或者是在错误的地方,我会提前道歉。这是我第一次来这里。我一整天都在忙这个,似乎无法解决这个问题。我以前从未使用过bcrypt,但我遵循了一些在线教程,我能够创建一个功能正常的注册页面。 以下是加密代码:

$password = password_hash($password, PASSWORD_DEFAULT)."\n";
注册页面工作正常,密码在数据库中加密。据我所知,在登录页面中,我们使用Select语句获取用户输入的用户名/电子邮件的哈希密码,然后使用password\u verify。这是我的代码:

$email = $_POST['user_email'];
$password = $_POST['user_password'];


$stmt = $db->prepare("SELECT Password FROM user WHERE Email= :email");
$stmt->execute(array(':email' => $email));
$hash = $stmt->fetchColumn(0);

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
出于某种原因,它仍然不断地说“无效密码”。我尝试打印select语句返回的哈希值,以确保它是DB中的哈希值,并且是。我还尝试复制散列并将其放入password\u verify中,试图找出问题所在,但仍然无法工作。你对我有什么想法吗


谢谢大家:o)

当您生成哈希时,不要用
向其添加换行符“\n”
我很确定您正在用它将其保存到数据库中。打印时会显示良好,但不会验证


工作: 输出:
非常感谢你的帮助。结果发现还有一个愚蠢的错误。在我的用户表中,我将密码字段的格式指定给VARCHAR,限制为20。所以散列不会被完全保存。所以它从来没有匹配过。现在它成功了,我很高兴:)
$password = 'test';
$hash = password_hash($password, PASSWORD_DEFAULT);

if (password_verify($password, $hash)) {
    echo 'Password is valid!';
} else {
    echo 'Invalid password.';
}
Password is valid!