【问题标题】:Decrypting rfc2898 password解密 rfc2898 密码
【发布时间】:2016-02-21 03:18:32
【问题描述】:

我正在开发中,我需要测试我的登录名/密码 api。

问题在于数据库中的密码已加密。

我有以下信息。

  • 迭代

这足以恢复密码吗?

顺便说一句,如果有帮助的话,我也可以编辑这些值。

【问题讨论】:

  • 只需重置密码。散列算法并不意味着要进行逆向工程,它们只是根据您的输入生成输出并使用逻辑来减少冲突。甚至您的字符串长度也会在散列过程中丢失。但仍有希望,存在无数次碰撞。您可以尝试在盐旁边输入随机字符,但遇到冲突不知道需要多长时间,尤其是在散列算法很慢的情况下。但是由于盐的存在,预先计算的数据库根本无法帮助您。放弃并继续前进。
  • 参见en.wikipedia.org/wiki/PBKDF2 由于计算时间的原因,很难找到冲突。

标签: hash cryptography salt pbkdf2


【解决方案1】:

您无法反转 PBKDF2,但您可以暴力破解通用密码以查看它们是否匹配。如果每次都使用随机盐,那么您将需要为每个密码单独执行此操作。如果使用较大的迭代次数,则准备好花费很长时间。

【讨论】:

    【解决方案2】:

    我认为您误解了密码 API 的工作原理。您无法反转正确散列的密码,但您可以根据存储的散列验证输入的密码。

    要验证输入的密码,您需要再次计算哈希值,使用与创建第一个哈希值相同的参数。然后你可以比较两个哈希值,如果它们匹配,则密码相同。

    【讨论】:

      【解决方案3】:

      首先,你应该重置它。

      其次,当且仅当密码很弱(假设正确实施 PBKDF2)并且您知道它使用了哪个 HMAC(可能是 PBKDF2-HMAC-SHA-1 - 使用已知密码进行测试)时,您才能恢复它,或者你愿意花时间尝试几个并希望。

      尝试使用像 oclHashcat 这样专为密码破解而设计的工具 - note PBKDF2 generic at the end of the list of examples 用于此目的,最好使用一个或多个良好的 GPU。

      或者,如果您只是测试您的密码 API,您可以通过它在my Github repository 运行测试向量,看看您的结果是否正确。

      【讨论】:

        猜你喜欢
        • 2014-11-27
        • 1970-01-01
        • 2016-08-08
        • 2012-10-03
        • 2020-11-10
        • 1970-01-01
        • 2015-04-01
        • 2020-07-04
        相关资源
        最近更新 更多