当我的应用程序被错误传递的SHA-160和欺骗时,我想测试它,因此我想计算对被求和的数据的更改,这会再次导致原始的SHA-1600和,因此会被遗漏。我正在使用C++中的Botan库来计算总和。
如何计算大约1500位的比特流的变化,使其SHA-160与原始的相同?
简单的答案是:你不能。
长期的答案是:你可以,但只有巨大的计算能力。哈希算法的全部目的是使其难以找到冲突。如果很容易发现冲突,那么使用哈希算法就没有什么意义了。
为了解决您的测试问题,我建议将应用程序的文件读取/哈希计算部分抽象到一个单独的类中,然后用假哈希实现来嘲笑,以便测试应用程序的其余部分。