我正在做一个使用彩虹表破解sha256的项目。我试图攻击8位数的字母数字序列。我完全理解彩虹表是如何工作的以及如何形成和存储链。但是,我不明白如何获得减少功能来形成链。我用谷歌搜索了几个小时,没有结果。那么,链条的良好减少功能是什么,它如何证明它涵盖了所有8位字母数字序列。
答案 0 :(得分:3)
有10 ^ 9个不同的8位数序列。 SHA256哈希值的前30位有1073741824个可能的值。因此,一种合理的方法是提取这30位并使用模数10 ^ 9作为缩减函数:
R(hash) = hash[0:30] % 10^9
这实际上不太可能涵盖所有8位数序列,但在实践中它应该绝对足够好,因为假设&#34;随机性&#34; SHA256的属性。由于模数的原因,对数字<= 2 ^ 30 - 10 ^ 9存在小的偏差。