我可以撤销C函数吗?

时间:2016-07-19 18:17:03

标签: c

基本上,我希望能够输入先前返回的值并让它计算函数的参数。示例:给定以下程序,我想输入"结果"并计算" num1"和" num2"。我的功能要复杂得多。

int max(int num1, int num2) {

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

2 个答案:

答案 0 :(得分:3)

你不能轻易做到这一点。这就是公钥加密工作的原因 - 很容易以一种方式计算,但很难找到原始参数。

您可以尝试num1和num2的所有可能排列并进行搜索,直到获得所需的结果,但这比预期的要长几个数量级。

此外,正如评论中提到或提到的那样,两个方向的功能并不总是1..1。例如,问题只有一个答案“10和20的平均值是多少?”虽然对于“两个数字平均到15个是什么?”这个问题有无限的答案。显然10和20平均到15,但11和19也平均到15。

答案 1 :(得分:3)

仅当每个输入产生单个输出时才可以这样做。

如果你的函数是f(x) - > n,你可以为x,record n提供每个可能的值,然后你会有一个查找表,可以用来查找x,当给定n时。

这就是密码破解在设计不良的系统上的工作原理。

如果函数需要多个可以产生相同值的参数,则在给定输出时无法获得输入,因为f(x,y) - > 3可以是f(1,2)或f(-10000,10003)或其他任何东西。