【问题标题】:Reverse-Engineer hash function from known input and output来自已知输入和输出的逆向工程散列函数
【发布时间】:2012-11-07 23:36:22
【问题描述】:

这个概念实际上非常简单,涉及从已知的输入和输出中找出散列函数。

有没有工具(我在linux上)可以快速找到这些信息?

例子:

秘密 - fc683cd9ed1990ca2ea10b84e5e6fba048c24929

知道上面的两个值,这个假设的机器会打印出sha1sum

请原谅我的初学者心态,我是新手,在空闲时间学习这个主题。

【问题讨论】:

  • 你要破解什么系统?
  • 好吧,这只是为了知识。我有一个来自我朋友的文本文件,其中有大约 7 对输入和输出。我试图找出使用了哪个哈希函数。所以...真的没有系统,我只有这个没有源代码或上下文的文本文件。
  • 您可以尝试通过一些更常见的哈希函数运行它,看看输出是否匹配。可能会走运

标签: hash


【解决方案1】:

假设输入字符串 X 保证产生输出哈希 Y,您可以构建一个使用每种编码类型的程序。

伪代码:

hash = "fc683cd9ed1990ca2ea10b84e5e6fba048c24929";
input = "secret"

if (md5(input) == hash)
    return "md5";
else if (sha1(input) == hash)
    return "sha1";
//etc...
else
    return "Unknown"

编辑:请参阅How come MD5 hash values are not reversible?,了解有关为什么不能“反转”诸如 md5 之类的哈希的更多信息。

编辑 2:我做了一些搜索,发现了这个:http://code.google.com/p/hash-identifier/ - 看起来很全面,所以看看吧。

【讨论】:

  • ...除此之外,有没有办法“反转”哈希?
  • 不。这就是为什么它们被称为“不可逆”哈希。
  • 嗯,我认为他们的意思是关于输出本身,而不是知道输入和输出的组合。
  • 好的,所以我运行了这个,它给了我两种可能的选择。我不明白程序建议的哈希值。其中之一:Domain Cached Credentials - MD4(MD4(($pass)).(strtolower($username))) 这个我看不懂。
  • 知道输入如何使反转它更容易?它只是让你很容易判断你是否成功。但是,如果您有输入,为什么还需要反转它呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2012-03-12
  • 2020-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多