为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用密码散列

如何使用密码散列

PHP
米脂 2019-06-05 13:29:23
如何使用密码散列最近,我一直试图在网上偶然发现的登录脚本上实现自己的安全性。在努力学习如何让自己的脚本为每个用户生成一个SALT之后,我无意中发现了Password_Hash。根据我所理解的(基于本页的阅读):http://php.net/manual/en/faq.passwords.php),当使用Password_Hash时,已在行中生成SALT。这是真的吗?我的另一个问题是,吃两种盐不是很明智吗?一个直接在文件里,一个在数据库里?这样的话,如果有人在DB中妥协了您的盐分,那么您仍然可以直接在文件中找到盐吗?我在这里读到,储存盐从来不是一个聪明的想法,但它总是混淆了人们的意思。
查看完整描述

3 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

使用password_hash是存储密码的推荐方法。不要将它们与DB和文件分开。

假设我们有以下输入:

$password = $_POST['password'];

我并不仅仅为了理解这个概念而验证输入。

首先通过以下操作散列密码:

$hashed_password = password_hash($password, PASSWORD_DEFAULT);

然后查看输出:

var_dump($hashed_password);

你可以看到它是散列的。(我想是你做的)。

现在,您将这个散列密码存储在数据库中,然后假设用户要求将它们登录。通过执行以下操作,可以在数据库中使用此哈希值检查密码输入:

// Query the database for username and password// ...if(password_verify($password, $hashed_password)) {
    // If the password inputs matched the hashed password in the database
    // Do something, you know... log them in.} // Else, Redirect them back to the login page.

正式参考


查看完整回答
反对 回复 2019-06-05
?
烙印99

TA贡献1829条经验 获得超13个赞

是的,正确理解它,函数Password_Hash()将自动生成一个盐类,并将其包含在结果的散列值中。将盐分存储在数据库中是绝对正确的,即使已知它也能完成它的工作。

// Hash a new password for storing in the database.// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT);
// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.$isPasswordCorrect = password_verify
($_POST['password'], $existingHashFromDb);

您提到的第二个盐(存储在文件中的盐)实际上是胡椒键或服务器端密钥。如果你在加入之前(如盐),然后你加入胡椒。不过,有一种更好的方法,您可以先计算哈希,然后用服务器端密钥加密(双向)哈希。这使您有可能在必要时更改密钥。

与盐相反,这把钥匙应该保密。人们常常把盐混在一起,试图把盐藏起来,但最好让盐做好它的工作,用一把钥匙把秘密加进去。


查看完整回答
反对 回复 2019-06-05
?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

是的,这是真的。为什么怀疑函数上的php FAQ?:)

运行结果password_hash()分四部分:

  1. 使用的算法
  2. 参数
  3. 食盐
  4. 实际密码散列

所以正如你所看到的,散列是它的一部分。

当然,您可以使用额外的盐来增加一层安全性,但老实说,我认为这在常规的php应用程序中是过分的。默认的bcrypt算法是好的,可选的河豚算法可以说更好。


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 524 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信