【发布时间】:2016-08-08 14:51:50
【问题描述】:
我对密码哈希有疑问。
我想在这里使用一个像这样的散列函数:
使用此功能,我可以在将密码保存到数据库之前对其进行哈希处理。
但是
在我的应用程序中,我使用密码登录到不同的服务器(如邮件服务器),但在 javacode 中,我需要的密码不是散列密码,而是纯文本密码。
所以现在我想知道如何再次提取纯文本密码(哈希+盐存储在数据库中,并且哈希函数/迭代计数已知)以使用它登录到我的不同服务器。
有人知道怎么做吗? (最好是我可以使用链接的 OWASP 代码来散列我的密码)
编辑 :似乎加密将是这里的方式,但这是一个可接受的解决方案(因为加密不是那么安全)?无论如何,我会使用高迭代次数和盐。
【问题讨论】:
-
不行。一旦密码被散列,就无法取回原始密码。这就是散列的全部想法!您可以验证给定输入是否 是 密码,但您无法重现它。 如果您需要实际密码,则必须对其进行加密,但您几乎可以肯定也不想这样做,因为它向所有人开放各种安全问题。
-
根据定义,如果您可以提取明文密码,那么您不满足 OWASP 要求。散列的全部意义在于防止这种情况发生。
-
但是我如何才能将密码安全地存储在数据库中,尽管我需要在我的代码中以纯格式使用它