当前位置: 首页 > 知识库问答 >
问题:

正确腌制和使用PHPass

欧阳博超
2023-03-14

我用PHPass散列密码已经很久了。我承认仍然有一些我不完全理解(或忽略)的东西来正确地散列密码,所以今天我查看了所有我能找到的关于它的信息。

回顾PHPass文档,我已经进入了这个:

除了实际的哈希之外,phpass 在对新密码或密码进行哈希处理时会透明地生成随机 salt,并将哈希类型、salt 和密码拉伸迭代计数编码到它返回的“hash 编码字符串”中。当phpass根据存储的哈希对密码或密码进行身份验证时,它同样透明地提取并使用哈希类型标识符,盐和“哈希编码字符串”中的迭代计数。因此,您不需要自己腌制和拉伸 - phpass为您照顾这些。

我把困扰我的句子加粗了。< br >我一直认为盐应该有点秘密,在某种意义上说,它不应该被攻击者知道。因此,如果理解正确的话,PHPass将salt存储在同一个散列中,这样它就能够在比较密码和检查密码是否有效时使用它。< br >我的问题是

    < li >这安全吗?如果散列被泄露,攻击者就有了用于散列密码的盐...我错过了一些东西。 < li >我在这里真的很自由,不必为设置密码而烦恼?我真的可以依赖PHPass吗?

共有3个答案

江智
2023-03-14

如果我理解正确,盐主要用于阻止预先计算的哈希/彩虹表攻击。只要生成的哈希是合理的全局唯一的(例如,不是在PHPass中硬编码的),就可以了。

赏成益
2023-03-14

盐的目的不是成为秘密。目的是为每个哈希输入添加一个唯一的组件,这样相同的密码将不会哈希到相同的哈希,从而使暴力破解过程更加困难和耗时,因为每个哈希都必须单独尝试。

是的,如果salt是保密的,它会稍微更安全一些,但在实践中很难实现,因为您的应用程序也需要salt,所以它需要存储在可以访问密码的地方。因此,在实践中,当攻击者获得密码散列时,他通常也能够获得salt。

陆俊捷
2023-03-14

一点背景<br>salt并不意味着秘密,相反,salt通过确保每个使用的实例的哈希结果都是唯一的来“工作”。这是通过为每个计算出的散列选取不同的随机salt值来实现的。

盐的意图在已知时不会受到影响;攻击者仍然需要单独攻击每个哈希。因此,您可以简单地将盐与密码一起存储。

那么,PHPass安全吗<是的!PHPass(根据最佳实践)为您生成强随机盐。这是一个经过充分审查的高质量图书馆。

感兴趣的链接:< br >如何安全地散列密码?< br >如何储存盐?< br >密码哈希添加盐胡椒或盐就够了吗?< br >盐生成和开源软件

 类似资料:
  • 问题内容: 我正在学习如何使用泡菜。我创建了一个namedtuple对象,并将其附加到列表中,并尝试使该列表腌制。但是,出现以下错误: 我发现,如果我运行代码时没有将其包装在函数中,那么它可以完美地工作。当包装在函数中时,是否需要额外的步骤来腌制对象? 这是我的代码: 问题答案: 在函数 外部 创建命名元组: 现在可以找到它;现在是全局模块。拆线时,所有要做的就是重新定位。在您的版本,是一个 地方

  • 下面链接的文档似乎表明可以对顶级类及其实例进行pickle处理。但根据我对前一个问题的回答来看,这似乎不正确。在我发布的脚本中,pickle接受类对象并写入文件,但这没有用。 这是我的问题:这个文档是错误的,还是有更微妙的东西我不明白?另外,在这种情况下,泡菜是否应该生成某种错误消息? https://docs . python . org/2/library/pickle . html # wh

  • 问题内容: 我的代码(我无法使用’pickle’): 打印: 谁能告诉我如何使用。 问题答案: 你想做什么?这个对我有用: 所以这将打印: 如果需要setstate: 打印:

  • 问题内容: 我有一个defaultdict看起来像这样: 问题是,我不能使用cPickle腌制它。我在这里找到的解决方案之一是使用模块级函数而不是lambda。我的问题是,什么是模块级功能?如何在cPickle中使用字典? 问题答案: 除了Martijn的解释之外: 模块级函数是在模块级定义的函数,这意味着它不是类的实例方法,它不嵌套在另一个函数中,并且它是带有名称的“真实”函数,而不是lambd

  • 问题内容: 我正在阅读有关PyQt5的一些文档,以提出一种简单的信号插槽机制。由于设计方面的考虑,我停了下来。 考虑以下代码: 为了跟踪对滑块所做的更改,我仅打印并记录所做的更改。我对代码不满意的是,我需要调用三次插槽以将相同的信息发送到3个不同的插槽。 是否可以创建自己的将整数发送到单个插槽的函数。插槽功能又会发出需要进行的更改吗? 也许我不完全了解它的目的,因为在PyQt Signal-Slo

  • 这可能是一个新问题,所以我会马上说出来。这是我第一次创建IDisposable类,我想确保我正确创建了我的类,正确调用了它,并正确处理了它。谢谢! 这就是我所说的。