很长一段时间以来,我一直在使用 PHPass 对我的密码进行哈希处理。我承认仍有一些我不完全理解(或忽略)正确散列密码的事情,所以今天我正在审查我能找到的所有信息。
回顾 PHPass 文档,我已经进入了这个:
除了实际的散列,phpass 在新密码或密码被散列时透明地生成随机盐,并将散列类型、盐和密码拉伸迭代计数编码到它返回的“散列编码字符串”中。当 phpass 针对存储的散列验证密码或密码短语时,它同样透明地提取并使用散列类型标识符、盐和“散列编码字符串”中的迭代计数。因此,您无需自己费心腌制和拉伸- phpass 会为您处理这些。
我把困扰我的句子加粗了。
我一直认为盐应该是秘密的,因为攻击者不应该知道它。因此,如果理解正确,PHPass 会将使用的盐存储在相同的哈希中,以便在比较密码并检查是否有效时能够使用它。
我的问题是
- 这安全吗?如果散列被泄露,攻击者拥有用于散列密码的盐......这里有一些我想念的东西。
- 我在这里真的可以免费为密码加盐吗?我真的可以依赖 PHPass 吗?