制作和储存盐的最佳途径
这个问题在这里已经有了答案:
现在PHP已经内置了使用行业标准bcrypt算法的password_hash
和password_verify
函数。 使用它们 - 他们为你管理盐。
如果你停留在PHP 5.4或更低版本,那么有一个backport:https://github.com/ircmaxell/password_compat
正如你所说,盐的重点不是一个额外的秘密。 密码是秘密。 密码需要很强。 如果密码不够强烈,则无论哈希如何,都可以直接在登录表单上猜出它,而不会对哈希造成任何攻击。 盐的重点完全在于你自己说的:
相同密码的相同散列
盐的唯一目的是迫使潜在的攻击者单独暴力破解每一个密码,而不允许攻击者规模经济。 它不会使任何一个单独的密码变得更强大,但它使得所有密码在一起完全不可行以暴力。
因此:
在PHP中,使用password_hash
,它生成salt并将其存储在散列结果中,因此您不必单独担心它。