密码哈希和PHP中的盐

我在一个网站上工作,这是一个超级安全的网站。 我读了很多关于密码哈希和使用盐的信息,但并不是所有的东西都很清楚。 我想用盐sha-256哈希算法。 我了解盐,他们应该每个用户每个密码都是唯一的。

我想知道如果我也使用密码作为盐吗? 使用sha256哈希密码,然后使用其他算法对其进行哈希处理,然后将其用作盐。 这样我就不必将salt存储在数据库中。 这可能吗? 或者我应该生成一个随机字符串?


不,这仍然是单向算法。

如果另一个用户使用相同的密码,则散列值将与第一个用户的散列值相同。 这就意味着每个用户和每个通过条目的散列值必须不同。

我建议使用用户(例如)的注册日期作为盐。 这种方式为每个用户和每次通过哈希算法将是不同的(好吧,如果两个用户有相同的通行证和相同的注册日期,它将是相同的)。

或者,也许你可以使用用户ID盐,或用户ID和reg.date和用户名之间的某种组合。

编辑:你的方法实际上比用无盐的已知算法进行哈希要好,但比哈希+提示盐差。

你所做的只是应用你自己的自定义哈希函数。 在不知道自定义算法的情况下,这不可能是轻而易举的事情,但可以适应其他攻击。

我建议不要在数据库中放置一个名为“SALT”的表,因为如果数据库被黑客入侵,攻击者将获取密码和他们的盐分。

链接地址: http://www.djcxy.com/p/21845.html

上一篇: Password hashing and salts in PHP

下一篇: Salt and passwords