在盐析和哈希之前使用纯文本密码(symfony 2)

在盐析和哈希之前使用纯文本密码(symfony 2),symfony,hash,password-protection,password-encryption,Symfony,Hash,Password Protection,Password Encryption,对于我的应用程序,我希望能够获得用户的密码,并在将其保存到数据库之前使用它。 我想这听起来不太安全,但我想做的是: 获取纯文本密码和salt 构建一个字符串,该字符串与symfony在数据库中存储的内容相反。 例如,假设symfony使用以下算法将数据存储在数据库哈希(password.salt)中,我想将哈希(salt.password)存储在某个地方。要做到这一点,我想我需要有明文密码。然后,我将使用这个新计算的字符串作为应用程序某个安全区域的密钥 谢谢您的帮助。当前的密码哈希函数不会在哈希

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

  • 获取纯文本密码和salt

  • 构建一个字符串,该字符串与symfony在数据库中存储的内容相反。 例如,假设symfony使用以下算法将数据存储在数据库哈希(password.salt)中,我想将哈希(salt.password)存储在某个地方。要做到这一点,我想我需要有明文密码。然后,我将使用这个新计算的字符串作为应用程序某个安全区域的密钥


  • 谢谢您的帮助。

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

    实际上,您想要的是从用户密码生成一个密钥。有些函数正是为此目的而创建的,它们被调用。众所周知的密钥派生函数是BCrypt和PBKDF2(基于密码的密钥派生函数2)


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

    类似的问题已经在这里解决了:谢谢。我将检查这些函数,而不是实现我自己的函数。