【问题标题】:Hashing in Java -> Get password from hash & saltJava中的散列->从散列和盐中获取密码
【发布时间】:2016-08-08 14:51:50
【问题描述】:

我对密码哈希有疑问。

我想在这里使用一个像这样的散列函数:

Hashing Java (OWASP)

使用此功能,我可以在将密码保存到数据库之前对其进行哈希处理。

但是

在我的应用程序中,我使用密码登录到不同的服务器(如邮件服务器),但在 javacode 中,我需要的密码不是散列密码,而是纯文本密码。

所以现在我想知道如何再次提取纯文本密码(哈希+盐存储在数据库中,并且哈希函数/迭代计数已知)以使用它登录到我的不同服务器。

有人知道怎么做吗? (最好是我可以使用链接的 OWASP 代码来散列我的密码)

编辑 :似乎加密将是这里的方式,但这是一个可接受的解决方案(因为加密不是那么安全)?无论如何,我会使用高迭代次数和盐。

【问题讨论】:

  • 不行。一旦密码被散列,就无法取回原始密码。这就是散列的全部想法!您可以验证给定输入是否 密码,但您无法重现它。 如果您需要实际密码,则必须对其进行加密,但您几乎可以肯定也不想这样做,因为它向所有人开放各种安全问题。
  • 根据定义,如果您可以提取明文密码,那么您不满足 OWASP 要求。散列的全部意义在于防止这种情况发生。
  • 但是我如何才能将密码安全地存储在数据库中,尽管我需要在我的代码中以纯格式使用它

标签: java hash


【解决方案1】:

哈希的全部目的是不可逆的。如果您可以取回纯文本密码,它将破坏哈希的目的,并且也是一个安全漏洞。

【讨论】:

    【解决方案2】:

    散列密码的意义在于,当有人得到散列时,他们并不意味着能够反转它。这是此安全措施的全部目的。您真正想要做的是获取用户输入,使用相同的算法对其进行散列,然后将该散列与您存储在数据库中的任何内容进行比较。 Here's a great link explaining the process in detail.

    【讨论】:

      猜你喜欢
      • 2015-02-17
      • 2014-06-10
      • 1970-01-01
      • 2015-08-20
      • 2012-03-24
      • 1970-01-01
      • 2011-06-02
      • 2011-10-29
      相关资源
      最近更新 更多