基本安全用户密码存储工作流程

时间:2012-08-20 18:24:25

标签: security passwords

给出原始密码

  1. 创造一种独特的盐
  2. 将其附加到原始密码
  3. brcypt / SHA512此组合使用随时间变化的一次性密钥
  4. 将加密的密码和salt存储在用户表
  5. 验证身份

    1. 将salt附加到原始密码
    2. bcrypt / SHA512组合验证
    3. 根据数据库哈希值检查哈希值
    4. 在验证部分,如果当前的密钥不再相同怎么办? 我应该始终保留旧密钥列表并重复它们以验证是否使用旧密钥之一生成了旧密码?如果验证者返回true,我将更新新的加密密码。

      另外,我如何确保每个用户的每个密码都是唯一的盐?

      这就是我需要做的吗?

      有什么遗漏?感谢。

1 个答案:

答案 0 :(得分:2)

确保salt是唯一的 - 您可以将用户名和上次更改密码的时间一起散列。

至于加密,只有在出于某种原因你想要存储用户密码时才需要加密,不仅要验证它。仅存储密码和盐的哈希值更常见且更安全。没有密钥是必要的,即使攻击者破坏数据库,他们也会有令人不安的恢复密码。唯一的缺点是你不能告诉用户他们的密码,你只能重置它们。