【问题标题】:Work with plain text password before salting and hashing (symfony 2)在加盐和散列之前使用纯文本密码(symfony 2)
【发布时间】:2014-04-29 15:15:00
【问题描述】:

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

  1. 获取明文密码和盐

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

感谢您的帮助。

【问题讨论】:

标签: symfony hash password-protection password-encryption


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我会检查这些功能,而不是自己实现。
猜你喜欢
  • 2015-02-17
  • 2018-03-26
  • 2011-07-27
  • 2015-08-20
  • 2011-09-27
  • 2016-07-30
  • 2012-03-24
  • 2011-06-02
  • 2011-10-29
相关资源
最近更新 更多