在腌制和散列之前使用纯文本密码(symfony 2)

时间:2014-04-29 15:15:00

标签: symfony hash password-protection password-encryption

出于我的应用程序的目的,我希望能够在将数据保存到数据库之前获取用户的密码并使用它。 我想这听起来不太安全,但我想做的是:

  1. 获取纯文本密码和盐

  2. 构建一个与数据库中symfony存储相反的字符串。 例如,让我们说symfony使用以下algorythm将数据存储在数据库哈希(password.salt)中,我想在某处存储哈希(salt.password) 。为此,我认为我需要使用纯文本密码。然后,我将使用这个新计算的字符串作为我应用程序某些安全区域的关键。

  3. 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

当前的密码散列函数不仅会在散列之前添加salt,而是会进行大量迭代并在每次迭代中使用salt。所以你不能反过来这样做。

实际上您的想法是从用户密码生成密钥。有些函数是为此目的而创建的,它们被称为key-derivation functions。众所周知的密钥派生函数是BCrypt和PBKDF2(基于密码的密钥派生函数2)。

因此,在您的情况下,您将密码的哈希值存储在数据库中以进行身份​​验证,但使用不同的 salt生成加密密钥。这种盐你必须存放在某个地方,但不是钥匙本身。