在没有强力的情况下,给出(小)输入长度反转SHA-1或MD5

时间:2013-01-30 17:49:34

标签: c++ algorithm hash md5 sha

我记得听说使用SHA-1发现了一些弱点,因此在给定输出哈希的情况下更容易找到明文输入。我也知道MD5已被确定为某些应用程序的弱点。我正在尝试创建一个程序来演示两种方法的不同复杂性:用于查找输入的强力搜索,以及利用SHA-1或MD5中的弱点来查找输入。

明文输入的长度<4并且仅由A-Z组成,因此强力不是不切实际的。

我的问题是:
是否有通过利用弱点来反转SHA-1的C / C ++实现? 是否有通过利用弱点来反转MD5的C / C ++实现?

我目前的感觉是,任何利用弱点的方法都不会在时间复杂性方面产生足够的差异,以证明这么小的样本规模可以带来好处。

2 个答案:

答案 0 :(得分:7)

不,这是不可能的。虽然MD5和SHA-1中确实存在一些弱点,但它们通常不允许这种形式的原像攻击 - 大多数已知的弱点都涉及构建碰撞对。

答案 1 :(得分:2)

有关SHA-1漏洞利用的非常详细的概述,请参阅

https://hashcat.net/p12/js-sha1exp_169.pdf

对于如此小的输入样本,您可以构建一个内存中的彩虹表,其中包含所有可能的输入值及其哈希值(以毫秒为单位)。我怀疑你会使用漏洞利用与暴力来衡量任何重大差异。

此外,对于如此小的输入范围,碰撞极不可能(因此几乎肯定没有碰撞对)。