6

是否可以计算三个加密整数的平均值?对加密方法没有限制。这样做的目的只是隐藏三个数字并找到平均值。

4

6 回答 6

14

您似乎正在寻找的是所谓的同态加密:一种加密方案,允许您对加密数据执行操作,并以加密结果作为结果。

这样的方案将允许您将加密数据提供给第三方,然后第三方可以在不知道他们正在计算什么的情况下为您进行计算。

在您的情况下,您需要两个操作:加法和除法。直到最近,同态加密方案通常只支持 1 个操作。但在 2009 年 9 月,IMB 宣布了第一个全同态密码系统。此后不久,其他研究发布了另一个系统。

这些密码系统也许可以做你想做的事,但它都是最前沿的计算机科学研究。

于 2010-04-04T23:09:13.993 回答
2

解密这些数字,然后计算它们的平均值。

于 2010-04-04T22:43:20.893 回答
2

除了首先解密数字之外,我没有看到任何简单的方法来完成您的要求。

取平均值(或“算术平均值”)需要添加数字。现在,如果您想将数字相乘,那么您可以使用 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 个根)。不幸的是,在模算术中计算立方根并非易事。

于 2010-04-04T22:51:36.553 回答
1

使用理想的加密方法:否。

对于大多数现实世界的加密方法:否。

使用一些非常简单的撤销混淆方法,专门设计用于允许平均:是的。

将后一种方法称为“加密”确实会使用错误的术语。

如果你可以在不解密的情况下计算加密数字的平均值,那么解密原始数字会容易得多,所以如果这适用于任何严格的加密算法,我会感到非常惊讶。

于 2010-04-04T22:49:53.000 回答
0

一般来说,如果加密,三个加密数字不应该保持相同的顺序,所以我很确定你必须解密它们并计算平均值。

于 2010-04-04T22:50:13.810 回答
0

当且仅当加密方法是一对一的数学函数时,才有可能在数字被加密时这样做。

例如,如果我非常不安全的加密方法是乘以每个 2,那么我将执行以下操作:

函数加密($数字){
    返回$数字*2;
    }

$a=加密(3);// a= 9
$b=加密(5);// b= 15
$c=加密(6);// c= 18

$平均 = ($a+$b+$c)/6; // 我们除以 6 因为首先我们除以 3 得到平均值,然后除以 2 进行解密。该方法将根据数学函数而有所不同。

唯一的另一种可能性是首先解密数字。

于 2010-04-04T22:53:35.593 回答