首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正确腌制和使用PHPass

正确腌制和使用PHPass
EN

Stack Overflow用户
提问于 2012-08-27 10:23:52
回答 3查看 969关注 0票数 6

很长时间以来,我一直在使用PHPass来破解我的密码。我承认,仍然有一些事情我不完全理解(或忽略)正确的散列密码,所以今天我审查了我可以找到的所有信息。

在回顾PHPass文档时,我已经深入到以下几个方面:

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

我说出了困扰我的句子。

我一直认为盐应该是某种程度的秘密,因为攻击者不应该知道它。因此,如果理解正确,PHPass会将使用的盐类存储在相同的散列中,这样它就能够在比较密码时使用它,并检查是否有效。

我的问题是

  1. 这安全吗?如果哈希被破坏,攻击者将有用于散列密码的salt .这里有些东西我很怀念。
  2. 我真的可以随便用盐腌密码吗?我真的可以依赖PHPass吗?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-27 10:28:58

盐的目的不是秘密。其目的是在每个散列输入中添加一个唯一的组件,这样相同的密码就不会散列到相同的散列中,从而使蛮力处理变得更加困难和耗时,因为每个散列都必须单独尝试。

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

票数 1
EN

Stack Overflow用户

发布于 2012-08-27 10:30:08

一个小小的背景

salt并不意味着是秘密的,相反,通过确保每个使用实例的散列结果是唯一的,salt“起作用”。这是通过为每个计算的散列选择不同的随机盐分值来完成的。

salt的意图在已知时不会受到破坏;攻击者仍然需要分别攻击每个散列。因此,您可以简单地将salt存储在密码旁边。

那么,PHPass安全吗?

是!PHPass (根据最佳实践)为您生成一个强随机盐。它是一个良好的评论和高质量的图书馆。

感兴趣的链接

How to securely hash passwords?

How to store salt?

Password Hashing add salt + pepper or is salt enough?

Salt Generation and open source software

票数 3
EN

Stack Overflow用户

发布于 2012-08-27 10:27:22

如果我正确理解,盐类主要用于阻止预先计算的散列/彩虹表攻击。只要生成所使用的散列,使其具有合理的全局惟一性(例如,在PHPass中没有硬编码),您就可以了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12140178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档