问题标签 [php-password-hash]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
273 浏览

php - 即使 password_hash() 已经提供了盐,我是否必须生成额外的盐?

在使用 PHP 的本机 password_hash() 函数时,必须(或应该)生成我自己的盐,即使(据我了解)它已经可以创建一个盐,如本示例中所示(由http://www.php 提供。净):

目前我一直在使用 sha512 进行散列并生成 38,500 个字符的盐。(我不确定字符数是否真的很重要,所以我还是尝试了......它似乎奏效了,因为允许我成功注册和登录用户,但我不知道整个安全漏洞)像这样:

很奇怪,但是在密码学方面我有很多东西要学。(这里是其中一种盐的链接https://shrib.com/F7lB9Ycf)现在如果我要添加额外的盐(如果你说是,再次加盐),那么我将如何在使用 password_verify 时添加盐()?

提前感谢任何可以提供帮助的人!

0 投票
3 回答
5556 浏览

php - 每个字符串的 PHP password_hash 函数值不同

我正在尝试使用password_hash() PHP 函数来散列用户密码。但是,它的函数是工作散列,而不是恒定的。

第四次测试结果

0 投票
1 回答
1268 浏览

java - 使用 Java 在 PHP 中使用 password_hash 验证密码散列

我有一个基于 PHP 的 Web 应用程序,它将 HTTP 请求发送到 Java Web 服务,Java Web 服务反过来执行 Oracle 数据库中请求的操作。我想在 HTTP 请求中发送密码之前使用 password_hash 对我的密码进行哈希处理。如果我在创建新用户时这样做,那没有问题。但是,当我需要使用此密码登录时,我无法在 PHP 中验证它,因为我没有(也不能)直接访问数据库以获取存储在那里的哈希值。所以验证必须在 Java Web 服务中。那有可能吗?如果没有,还有什么选择?使用的盐是随机的,所以我不能散列用于登录的密码并发送它,因为我没有用于存储在数据库中的散列的盐。

0 投票
0 回答
508 浏览

php - Password_verify 与数据库不匹配

我查看了与此相关的其他问题/答案,并尝试以多种方式修改我的代码以适应他们的答案,但没有成功。我有一个可以正常工作的注册表单,并使用 password_hash 函数成功地将用户添加到数据库中。密码字段为 VARCHAR(255),输入时显示为散列。

问题在于登录表单。我一整天都在尝试各种方法,但没有成功。下面是我当前的 login.php 脚本。

$error 变量工作正常,但仍然看不到密码验证出错的地方,不断收到“电子邮件或密码无效”错误而不是“匹配”。

对于我在代码中遗漏的内容,我真的很感激一些反馈!谢谢 :)

0 投票
1 回答
1166 浏览

php - 使用来自数据库的散列密码时,password_verify 不起作用

解决了

我的注册表有一个奇怪的问题。JS 做了一些奇怪的事情,即使 password_verify 在登录时工作,哈希在某些情况下是不同的......现在我修复了我的代码,它现在可以工作了!谢谢大家!

解决了

我正在认真地试图弄清楚为什么我的 password_verify 代码已经 4 天没有工作了,我真的很困惑和生气......

首先,我不得不说会话已经开始,其他一切都在正常工作。

但是当我尝试创建一个 password_verify 脚本时,它仍然回显错误...

数据库中的字段被命名password并设置为varchar 255.

来自数据库的密码如下所示:

$2y$10$GEw0Ie6r/Udz2hgJVkCy.ut99NY5NE.h8LEvNM1gBizA1tY58iNa6

不错,应该是这个样子的。。。

当我在我的页面上回显数据库密码时,它显示相同,所以很好。但是当我这样做时password_verify,它不起作用。它表明这password_verify是错误的......我不知道为什么,因为我 100% 确定我在表单中输入的密码是正确的并且与 db 密码匹配。但是,它不起作用,并且不会像应有的那样回显“DONE”。

echo strlen显示 60

echo $dbpassword显示散列的数据库密码。

echo $passwordsubmitted显示从表单正常输入的密码。

但是,当我使用这段代码时,它正在工作并且 echo 是“DONE”,所以这意味着 password_verify 是真的......

我真的不知道为什么会这样。有什么建议么?

更新 注册输入是<input type='password' name='password'>

注册时提交的密码使用以下代码进行哈希处理:

0 投票
1 回答
667 浏览

php - 尝试散列密码时将空值输入数据库

我过去在项目中使用过少量 PHP,但是我正在尝试一些新的尝试来哈希密码。

在一个单独的页面上有一个 web 表单,它在提交时重定向到 checkRegistration.php 表单,然后连接到数据库,获取用户值,验证它们并将它们输入到各自的列中。

到目前为止,所有传递的值都正确输入,除了那些被password_hash函数传递的值被输入为“0”或空。我认为它是 0 它没有被正确处理并且想知道我做错了什么。

?>

0 投票
2 回答
969 浏览

php - 将密码与存储的哈希进行比较

据我目前的理解(至少我认为),password_hash() 函数根据使用的算法、成本和盐生成哈希。而password_verify 使用eg 提供的信息password_hash($pass, PASSWORD_BCRYPT, array('cost'=>10))来检查返回的值是真还是假,因为它包含验证所需的所有信息。

我以前用过

$SQL_Query = "SELECT * FROM DB_Table WHERE userName = '".$username."'" AND password = $ID;

这将起作用,因为它们以纯文本形式存储并且可以返回 true,而从逻辑上讲,这一次它不会起作用。

我遇到过类似的问题,他们在解释中使用静态密码,例如

我难以理解的概念是,如果密码输入存储在数据库中,而不是在那个时间点被页面知道,如何检查密码输入与哈希值?我最近得到了有关存储值的帮助,这对我来说是一个愚蠢的错误,但我想这并没有像我现在希望的那样点击我。

0 投票
1 回答
1067 浏览

authentication - Xenforo 密码验证问题

以下是我的密码存储哈希:

$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0

我正在尝试像这样验证我的 Xenforo 密码:

例如:

我的密码是:123456

我的密码存储哈希是:$P$Di4MXJKUkkJRfzrpffssNdasSN3XAg0

所以我正在编写以下代码进行身份验证:

任何人都可以建议我如何进行身份验证?

提前致谢。

0 投票
6 回答
233941 浏览

php - 如何使用 PHP 的 password_hash 来散列和验证密码

最近,我一直在尝试在互联网上偶然发现的登录脚本上实现自己的安全性。在努力学习如何制作自己的脚本为每个用户生成盐之后,我偶然发现了password_hash.

据我了解(基于此页面上的阅读),当您使用password_hash. 这是真的?

我的另一个问题是,有 2 种盐不是很聪明吗?一个直接在文件中,一个在数据库中?这样,如果有人在数据库中破坏了您的盐,您仍然可以直接在文件中使用它吗?我在这里读到存储盐从来都不是一个聪明的主意,但它总是让我困惑人们的意思。

0 投票
2 回答
785 浏览

php - What will happen if they changed PASSWORD_DEFAULT in PHP Password library?

Consider this line of code by using PHP:

What will happen if they changed the default password hashing algorithm? I mean I will be having hashed password inside the database. Then, from my own understanding, it will be impossible to check the password because the hashing algorithm will be totally changed.