如何在加密算法未知时解密编码消息

时间:2013-04-03 21:15:11

标签: algorithm encryption

考虑到我们有以下信息:

BLOCK A : 8374928304
BLOCK B : 7719

Result : 239

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

2 个答案:

答案 0 :(得分:1)

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

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

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

然而,正如您将看到的,简单的方法需要花费更多的时间来尝试验证,然后您可能已经掌握了。作为一个例子,我们可以假设散列方案是:

  

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

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

  

取块A,用块B + 1修改它,然后减去1865

这也适用于上述值,但很快就会没有耐心了。因此,如果没有关于你的对手可能采用何种哈希方案的理论,这是一个非常难以解决的问题。

答案 1 :(得分:0)

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