如何找到哈希的可能性数量

时间:2011-04-28 06:58:50

标签: encryption

如果我有这样的哈希说法:0d47aeda9d97686ab3da96bae2c93d078a5ab253

如果我从0000000000000000000000000000000000000000到9999999999999999999999999999999999999999(这是sha1的一般长度)开始,我如何进行数学计算以找出尝试的可能性。

5 个答案:

答案 0 :(得分:4)

可能性的数量为2^(X),其中X是散列中的位数。 在哈希值的正常十六进制字符串表示中,就像您给出的那样,每个字符是4位,因此它是2^(4*len),其中len是哈希值的字符串长度。在您的示例中,您有一个40个字符的SHA1摘要,对应160位,或2 ^ 160 == 1.4615016373309029182036848327163e + 48个值。

答案 1 :(得分:1)

SHA-1散列是160位,因此有2 ^ 160个可能的散列。

答案 2 :(得分:0)

您的十六进制数字范围是0到f。

然后它只是16 ^ 40或包含多少字符

答案 3 :(得分:0)

回想一下,哈希函数接受任意长度的输入。一个好的加密哈希函数似乎会为任何输入分配一个“随机”哈希结果。因此,如果摘要长度为N位(对于SHA-1,N = 160),则每个输入将被散列为2 ^ N个可能结果之一,我们将视为随机。

这意味着用于查找散列结果的前映像的期望正在运行2 ^ N个输入。它们不必具体是您建议的范围 - 任何2 ^ N个不同的输入都可以。

这也意味着2 ^ N输入不保证您将找到一个preimage - 每次尝试都是随机的,所以你可能会错过每个1-in-2 ^ N的机会单个其中一个2 ^ N输入(就像两次掷硬币一样,并不能保证你至少得到一次头部)。但是你可以弄清楚需要多少输入才能找到概率为p或更高的哈希的原像 - p与你想要的一样接近(实际上不是1)。

答案 4 :(得分:-1)

最大变化,重复并注意顺序被定义为n ^ k。在你的情况下,这将意味着10 ^ 40,这对SHA1来说是不正确的。阅读维基百科它sais SHA1有一个最大值。基于碰撞的2 ^ 80攻击的复杂性,使用不同的技术研究已经成功完成了2 ^ 51次碰撞,所以10 ^ 40看起来有点多。