反转给定(小)输入长度的 SHA-1 或 MD5,无需蛮力

Reversing SHA-1 or MD5 given (small) input length without brute force

本文关键字:MD5 SHA-1 输入      更新时间:2023-10-16

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

明文输入的长度为 <4,并且仅由 A-Z 组成,因此暴力破解并非不切实际。

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

我目前的感觉是,任何利用弱点的方法都不会有足够的时间复杂度差异来证明如此小的样本量的好处。

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

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

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

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

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