首页 文章

PHP中的密码散列和盐

提问于
浏览
0

我正在开发一个(尝试)超级安全的网站 . 我读了很多关于密码散列和使用盐的信息,但并非一切都很清楚 . 我想用salt使用sha-256哈希算法 . 我知道他们所有人都应该是每用户每个密码唯一的盐 .

我想知道如果我也使用密码作为盐呢?使用sha256散列密码,然后使用其他算法对其进行散列并将其用作salt . 通过这种方式,我不必将salt存储在数据库中 . 这可能吗?或者我应该生成随机字符串?

1 回答

  • 0

    不,这仍然是单向算法 .

    如果另一个用户使用相同的密码,则哈希值将与第一个用户的传递的哈希值相同 . 这忽略了每个用户和每个传递条目的哈希值必须不同的点 .

    我建议使用用户注册日期(例如)作为盐 . 这种方式对于每个用户和每次传递的哈希算法都是不同的(好吧,如果两个用户具有相同的传递和相同的注册日期,它将是相同的) .

    或者也许您可以使用用户ID作为salt,或者用户ID和reg.date以及用户名之间的某种组合 .

    Edit: 你的方法实际上比没有盐的已知算法的哈希更好,但比哈希盐更差 .

    你所做的只是应用你自己的自定义哈希函数 . 在不知道自定义算法的情况下,这不容易被暴力强迫,但是对其他攻击是有害的 .

    我建议不要在数据库中放置一个名为“SALT”的表,因为如果数据库遭到攻击,攻击者将获取密码和盐 .

相关问题