- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 password_hash
将密码存储在 VARCHAR(255) 类型的 MySQL 数据库字段中。当我尝试登录用户并验证凭据时,password_verify
函数总是返回 false。
这是将密码存储在 MySQL 数据库中的代码摘录:
$password_hash = password_hash($password, PASSWORD_DEFAULT);
// Generate API Key
$api_key = $this->generateApiKey();
// Insert Query
$stmt = $this->conn->prepare("INSERT INTO user(email, password, name, api_key, status) values(?, ?, ?, ?, 1)");
$stmt->bind_param("ssss", $email, $password_hash, $name, $api_key);
$result = $stmt->execute();
$stmt->close();
还有一段检查密码的代码:
// Query user by email
$stmt = $this->conn->prepare("SELECT password FROM user WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->bind_result($password_hash);
$stmt->store_result();
if ($stmt->num_rows > 0) {
// Found user with that email address
// Now verify the password
$stmt->fetch();
$stmt->close();
if (password_verify($password, $password_hash)) {
// User password is correct
return TRUE;
然后我写了这段测试代码,直接从MySQL字段中抓取数据,还是不行。当我在同一个文件中创建 password_hash(下面文件中的 $hash2)时 - 然后密码验证正确。
$password = 'pass1234567890';
$hash = '$2y$10$JLP/pPei6RYRdUmoH8H5RO7iJyImOtrBLsrRRfq3XpeqNE3lQ/l7O';
$hash2 = password_hash($password, PASSWORD_DEFAULT);
echo $hash . " - " . strlen($hash);
echo "<br />";
echo $hash2 . " - " . strlen($hash2);
echo "<br />";
if (password_verify($password, $hash)) {
echo "Password Valid!";
} else {
echo "Password invalid!";
}
echo "<br /><br />";
if (password_verify($password, $hash2)) {
echo "Password 2 Valid!";
} else {
echo "Password 2 invalid!";
}
最佳答案
这证明你的哈希有问题
<?php
// See the password_hash() example to see where this came from.
$password = 'pass1234567890';
$hash = '$2y$10$JLP/pPei6RYRdUmoH8H5RO7iJyImOtrBLsrRRfq3XpeqNE3lQ/l7O';
$hash2 = '$2y$10$gMJKYZUc1FKSZBnsONxLOebOHj.uuEWSiCP0jo4Zv0iAHBz6iz.NG';
if (password_verify('pass1234567890', $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
echo "<br>";
if (password_verify('pass1234567890', $hash2)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
截图
关于PHP password_hash 和 password_verify 不适用于 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666597/
我正在使用 PHP 5.5+ password_hash() 函数在将密码存储到数据库之前对其进行哈希处理。到目前为止一切顺利。 我有点不确定的是,是否需要对从表单发送到我的 PHP 脚本的密码进行预
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我一直在阅读有关密码哈希函数的内容,据说:使用盐使黑客的工作更加困难,使用高度成本算法等我找到了这个 password_hash 函数但是......它返回这个(字母是一个例子来解释) AAAACCC
根据(相对)新的 PHP 文档: password_hash函数使用随机盐(我们不应该担心.. O_O),所以如果我理解正确,盐必须存储在某个地方,否则用户在注册到网站后将无法登录(不同的盐=>不同的
这个问题在这里已经有了答案: Using PHP 5.5's password_hash and password_verify function (4 个答案) 关闭 7 年前。 我正在考虑使用
这个问题在这里已经有了答案: password_hash returns different value every time (1 个回答) 关闭 4 年前。 我试图在将密码存储到用户数据库之前对
如果我有两个使用 password_hash 创建的密码哈希功能,我如何判断它们是否来自相同的基本密码?我知道它每次都使用不同的盐。我没有纯文本。 例如: $2y$10$M6CnjqaxuUKNhg8
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 6 年前。 Improve t
我知道 PHP 函数,password_hash 在一个字符串中输出算法、成本、salt 和哈希,因此 password_verify 可以检查密码。 来自 PHP page 的示例输出: $2y$1
我的注册脚本接受用户密码,然后使用 PHP 的 password_hash 函数对密码进行加密,然后将其放入数据库中。当我使用刚创建的用户登录时,出现检查密码是否相同的错误。就我而言,他们不是。我在登
阅读有关新 password_hash 的文档PHP 5.5 的函数,我想知道默认算法是什么: password_hash("rasmuslerdorf", PASSWORD_DEFAULT); 关于
我正在制作一个登录系统,我想对密码进行哈希处理以使其更安全,但每次都会返回不同的哈希值,甚至无法使用 password_verify() 进行验证,这是我的代码: $password = passwo
这个问题在这里已经有了答案: Secure hash and salt for PHP passwords (14 个答案) 关闭 8 年前。 我想知道 password_hash("customp
我现在正在本地主机上运行 php 版本 5.4.16,同时我正在开发我的网站。我想使用 password_hash(),但我一直收到此错误: Fatal error: Call to undefine
PHP password_hash() 函数允许的最大成本是多少? $options = [ 'cost' => 18, ]; $res = password_ha
PHP password_hash() 函数允许的最大成本是多少? $options = [ 'cost' => 18, ]; $res = password_ha
我有 2 个具有不同代码的注册页面,但我希望它们返回相同的密码哈希值!或至少 Password_verify 接受的格式首先是: function _password_hash($password)
这个问题在这里已经有了答案: Implement password recovery best practice (12 个答案) 关闭 7 年前。 我目前正在使用 password_hash,这是
我正在使用 password_hash 函数来保护登录页面上的用户密码。但是,在注册页面上,我要求用户两次提示他的密码,但我无法比较两个哈希值,因为即使密码相同,它们也不同。 我应该将两个密码作为字符
我可以在 PHP 5.5 password_hash() 和 password_verify() 中使用的最大密码长度是多少? 最佳答案 好的,让我们来看看这个。 函数确实有密码长度限制。就像 PHP
我是一名优秀的程序员,十分优秀!