使用PHP,我正在使用sha256算法的hmac函数对密码进行编码。我不确定的是如何正确地存储盐。
哈希密码的整个目的是为了防止黑客获取数据库访问权。如果我将盐存储在与哈希密码相同的数据库行中,岂不是就像我在将"秘密代码"交给黑客? 这就像我安装了一扇带锁的门,并将钥匙交给入侵者。
请问有人能够解释一下他们是如何存储盐的吗?
使用PHP,我正在使用sha256算法的hmac函数对密码进行编码。我不确定的是如何正确地存储盐。
哈希密码的整个目的是为了防止黑客获取数据库访问权。如果我将盐存储在与哈希密码相同的数据库行中,岂不是就像我在将"秘密代码"交给黑客? 这就像我安装了一扇带锁的门,并将钥匙交给入侵者。
请问有人能够解释一下他们是如何存储盐的吗?
mysql_*
函数作为API。它们已经不再维护,并且停用过程已经开始。crypt()
函数使用良好算法(建议使用CRYPT_BLOWFISH
)创建哈希,则破解一个密码甚至可能需要数年时间。在此期间,您可以轻松向用户发送“更改密码”通知,并锁定所有未这样做的用户。盐被设计为明文并立即可用。密码哈希是完全不可逆的,但可以通过字典攻击破解。因此,需要足够的盐来增加几个数量级,以扰乱字典攻击。公开盐不应降低哈希密码的安全性。