是否可以计算三个加密整数的平均值?对加密方法没有限制。这样做的目的只是隐藏三个数字并找到平均值。
6 回答
您似乎正在寻找的是所谓的同态加密:一种加密方案,允许您对加密数据执行操作,并以加密结果作为结果。
这样的方案将允许您将加密数据提供给第三方,然后第三方可以在不知道他们正在计算什么的情况下为您进行计算。
在您的情况下,您需要两个操作:加法和除法。直到最近,同态加密方案通常只支持 1 个操作。但在 2009 年 9 月,IMB 宣布了第一个全同态密码系统。此后不久,其他研究发布了另一个系统。
这些密码系统也许可以做你想做的事,但它都是最前沿的计算机科学研究。
解密这些数字,然后计算它们的平均值。
除了首先解密数字之外,我没有看到任何简单的方法来完成您的要求。
取平均值(或“算术平均值”)需要添加数字。现在,如果您想将数字相乘,那么您可以使用 RSA 加密巧妙地做到这一点。如果p是明文,c是密文,e是加密密钥,那么在RSA中,c = p^e。如果您有 3 个单独的整数 p1、p2、p3,并且乘积是 pp,那么
pp^e = (p1 * p2 * p3)^e = p1^e * p2^e * p3^3 = c1 * c2 * c3 = cp
也就是说,你可以将三个明文整数相乘然后加密,也可以将三个密文相乘,得到相同的答案。这将使您对“几何平均值”有所了解,将所有数字相乘,然后取立方根(或 n 个数字的第 n 个根)。不幸的是,在模算术中计算立方根并非易事。
使用理想的加密方法:否。
对于大多数现实世界的加密方法:否。
使用一些非常简单的撤销混淆方法,专门设计用于允许平均:是的。
将后一种方法称为“加密”确实会使用错误的术语。
如果你可以在不解密的情况下计算加密数字的平均值,那么解密原始数字会容易得多,所以如果这适用于任何严格的加密算法,我会感到非常惊讶。
一般来说,如果加密,三个加密数字不应该保持相同的顺序,所以我很确定你必须解密它们并计算平均值。
当且仅当加密方法是一对一的数学函数时,才有可能在数字被加密时这样做。
例如,如果我非常不安全的加密方法是乘以每个 2,那么我将执行以下操作:
函数加密($数字){ 返回$数字*2; } $a=加密(3);// a= 9 $b=加密(5);// b= 15 $c=加密(6);// c= 18 $平均 = ($a+$b+$c)/6; // 我们除以 6 因为首先我们除以 3 得到平均值,然后除以 2 进行解密。该方法将根据数学函数而有所不同。
唯一的另一种可能性是首先解密数字。