【问题标题】:How should i save my Password?我应该如何保存我的密码?
【发布时间】:2010-11-11 04:23:19
【问题描述】:

我正在用 JSF 编写一个新站点。目前我对登录进行编程。
几年前我使用过 md5,但对于 Rainbow Tables,我认为它不再安全了。
那么,我应该如何将密码存储在数据库中?

【问题讨论】:

  • 如果盐分不错,即使是 MD5 对于某些应用程序也是可以接受的。最重要的是给密码加盐。

标签: security passwords md5 sha1


【解决方案1】:

【讨论】:

  • 当然,阿门。非常重要的建议;特别是处理加盐和随机数,使用慢散列,以及最关键的建议......重用现有的实现。
  • 谢谢,我不知道 SRP 的事情。
【解决方案2】:

您要做的第一件事是从您的供应商那里寻找预构建的系统。您希望尽可能多地将其推送给以编写安全代码为生的人,因为很容易以您甚至不知道的微妙方式出错,直到为时已晚。这样,您还可以从他们那里获得服务更新,因此您不必再考虑它了。

除此之外,请记住生成每个帐户的 salt 以配合您的密码,并使用安全的散列算法(md5 意味着速度,不一定是安全性)。 SHA1 很常见,虽然它也开始变老了。

【讨论】:

    【解决方案3】:

    我建议使用 sha512 和 salting 进行散列。 (为每个人存储一个随机值并将密码和该值一起散列。)

    【讨论】:

      【解决方案4】:

      如果您查找 PKCS#5(或者更好的是,找到已经这样做的有信誉的实现),您会发现一个非常好的机制。

      基本上,您选择一个数字(比如 500)、一个密码、一个哈希算法和一个盐(在密码末尾添加随机数据以使其不易被猜到)。

      1. 获取密码,加盐,然后散列。
      2. 获取结果,salt that (Same salt) and has that。
      3. 重复步骤 2 N 次(在本例中,N 为 500)。
      4. 将最终的散列、加盐结果与 N 和加盐本身一起存储在您的密码数据库中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        • 2011-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 2014-01-17
        相关资源
        最近更新 更多