我应该使用codeigniter的加密密钥来散列密码吗?

时间:2013-06-02 07:40:08

标签: php codeigniter password-encryption

我在某些情况下看到开发人员使用加密密钥(从config.php)到哈希密码并将其存储在数据库中。我想知道这样做是否更好,或者每次都通过创建一个随机盐(例如在函数中)更好?

嗯,我想在第一种情况下你不必在数据库中存储(和)盐,但它是否足够安全以及如果与密码匹配会怎么样?

3 个答案:

答案 0 :(得分:3)

您使用salt来防止攻击者的暴力攻击在整个散列密码数据库中分摊。使用每个密码的唯一salt,即使相同的密码也会散列到不同的哈希值,从而迫使攻击者单独使用每个密码。通过使用静态盐(实际上称为 pepper )来区分它与真正的盐,相同的密码散列到相同的散列,因此允许攻击者以更快的速度暴力破解大量密码哈希(你不会相信有多少人使用“猴子”作为他们的密码)。

因此:

    每个密码
  • 唯一的 salt 是必须的
  • 每个密码的可选 pepper 是一个稍微增加的奖励,但只有在你可以保护攻击者的秘密时才有用

答案 1 :(得分:0)

确实,随机生成的盐会产生更大的安全性,,任何能够访问密码列表以便破解它们的人都可以访问你的数据库,在这种情况下,他们可以访问你的盐。

答案 2 :(得分:-3)

而不是使用散列密码的任何大东西,使用MD5与salting和everythi