我记得听说使用SHA-1发现了一些弱点,因此在给定输出哈希的情况下更容易找到明文输入。我也知道MD5已被确定为某些应用程序的弱点。我正在尝试创建一个程序来演示两种方法的不同复杂性:用于查找输入的强力搜索,以及利用SHA-1或MD5中的弱点来查找输入。
明文输入的长度<4并且仅由A-Z组成,因此强力不是不切实际的。
我的问题是:
是否有通过利用弱点来反转SHA-1的C / C ++实现?
是否有通过利用弱点来反转MD5的C / C ++实现?
我目前的感觉是,任何利用弱点的方法都不会在时间复杂性方面产生足够的差异,以证明这么小的样本规模可以带来好处。
答案 0 :(得分:7)
不,这是不可能的。虽然MD5和SHA-1中确实存在一些弱点,但它们通常不允许这种形式的原像攻击 - 大多数已知的弱点都涉及构建碰撞对。
答案 1 :(得分:2)
有关SHA-1漏洞利用的非常详细的概述,请参阅
https://hashcat.net/p12/js-sha1exp_169.pdf
对于如此小的输入样本,您可以构建一个内存中的彩虹表,其中包含所有可能的输入值及其哈希值(以毫秒为单位)。我怀疑你会使用漏洞利用与暴力来衡量任何重大差异。
此外,对于如此小的输入范围,碰撞极不可能(因此几乎肯定没有碰撞对)。