出于我的应用程序的目的,我希望能够在将数据保存到数据库之前获取用户的密码并使用它。 我想这听起来不太安全,但我想做的是:
获取纯文本密码和盐
构建一个与数据库中symfony存储相反的字符串。 例如,让我们说symfony使用以下algorythm将数据存储在数据库哈希(password.salt)中,我想在某处存储哈希(salt.password) 。为此,我认为我需要使用纯文本密码。然后,我将使用这个新计算的字符串作为我应用程序某些安全区域的关键。
感谢您的帮助。
答案 0 :(得分:0)
当前的密码散列函数不仅会在散列之前添加salt,而是会进行大量迭代并在每次迭代中使用salt。所以你不能反过来这样做。
实际上您的想法是从用户密码生成密钥。有些函数是为此目的而创建的,它们被称为key-derivation functions。众所周知的密钥派生函数是BCrypt和PBKDF2(基于密码的密钥派生函数2)。
因此,在您的情况下,您将密码的哈希值存储在数据库中以进行身份验证,但使用不同的 salt生成加密密钥。这种盐你必须存放在某个地方,但不是钥匙本身。