-4

考虑到我们有以下信息:

BLOCK A : 8374928304
BLOCK B : 7719

Result : 239

结果是从这两个块生成的,但算法是未知的。但是,我有几个block&result对。如何找出这两个块的结果是如何产生的?

4

2 回答 2

1

您的成功主要取决于创建密码/散列方案的实体的复杂性。原则上,仅使用几个输入/输出对来正确识别散列方案非常困难,因为可以使用无数种方法从给定输入生成给定输出。

您发现散列方案的唯一机会是散列方案不是很复杂,您可以以某种方式猜测它是什么。如果我认为哈希创建者不是很复杂,这里有一些我想尝试的非常基本的哈希方案:

  • 简单校验和:计算块 A / 块 B 的校验和。尝试加减法等。
  • 取两个值的,然后执行进一步的功能。

但是,正如您将看到的,简单的方法会花费您更多的时间来尝试和验证,而不是您可能已经掌握的方法。例如,我们可以假设散列方案是:

取块 A,用块 B 修改它,然后减去 6040

这将适用于上述情况,但我强烈怀疑它不会适用于您的其他值。然后我们可以尝试:

取块 A,用块 B+1 取模,然后减去 1865

这也适用于上述值,但很快你就会失去耐心。因此,如果没有关于您的对手可能选择哪种散列方案的理论,这是一个极难解决的问题。

于 2013-04-03T21:18:48.420 回答
0

加密的目的是向不知道算法或不知道如何使用算法解密数据的某些特定信息的攻击者隐藏数据(例如,在公钥/私钥加密中,算法是众所周知的,但私钥显然不是)。如果您不知道该算法但能够对其进行逆向工程,那么该算法就不是很安全。因此,如果您正在处理设计良好的加密算法,那么从统计上讲,您不可能按照您的要求进行操作。

于 2013-04-03T21:27:45.773 回答