Encryption 计算三个加密数字的平均值

Encryption 计算三个加密数字的平均值,encryption,average,Encryption,Average,可以计算三个加密整数的平均值吗?对加密方法没有限制。关键是要隐藏这三个数字并找到平均值。解密这些数字,然后计算它们的平均值。使用理想的加密方法:否 对于大多数真实世界的加密方法:否 用一些愚蠢的简单的撤销模糊处理方法,特别是设计来允许平均:是的 将后一种方法称为“加密”实际上是使用了错误的术语 如果你能计算加密数字的平均值而不解密它们,那将使解密原始数字变得非常容易,因此如果这能与任何严肃的加密算法一起工作,我会非常惊讶。一般来说,三个加密数字在加密后不应保持相同的顺序,所以我很确定你必须解密它

可以计算三个加密整数的平均值吗?对加密方法没有限制。关键是要隐藏这三个数字并找到平均值。

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

使用理想的加密方法:否

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

用一些愚蠢的简单的撤销模糊处理方法,特别是设计来允许平均:是的

将后一种方法称为“加密”实际上是使用了错误的术语


如果你能计算加密数字的平均值而不解密它们,那将使解密原始数字变得非常容易,因此如果这能与任何严肃的加密算法一起工作,我会非常惊讶。

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

除了先解密数字之外,我看不到任何简单的方法来满足你的要求

取平均值(或“算术平均值”)需要将数字相加。现在,如果您想将数字相乘,那么您可以使用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,那么我将执行以下操作:

function encrypt($number){ return $number*2; } $a=encrypt(3); // a= 9 $b=encrypt(5); // b= 15 $c=encrypt(6); // c= 18 $average = ($a+$b+$c)/6; // We divide by 6 because first we divide by 3 to get the average, then by 2 to do the decryption. The method will vary based on the mathematical function. 函数加密($number){ 返回$number*2; } $a=加密(3);//a=9 $b=加密(5);//b=15 $c=加密(6);//c=18 $average=($a+$b+$c)/6;//我们除以6,因为首先我们除以3得到平均值,然后除以2进行解密。该方法将根据数学函数的不同而有所不同。
唯一的另一种可能是先解密数字。

您似乎在寻找的是一种加密方案,它允许您对加密数据执行操作,并将加密结果作为结果

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

在本例中,需要两个操作:加法和除法。直到最近,同态加密方案通常只支持一个操作。但在2009年9月。之后不久,其他研究也在进行中


这些密码系统可能可以做你想做的事情,但这都是尖端的计算机科学研究。

我不认为这是问题的关键。我很确定OP想要计算平均值,而不透露单个数字(甚至是计算平均值的CPU)。这可能不是重点,但说真的,否则怎么做才合理呢?已经有关于加密计算的研究,进行计算的硬件无法发现输入或输出。所以这个问题并不像听起来那么愚蠢。为什么不把平均数和加密的数字一起存储呢?如果你能从“加密”数字中得到一个平均值,那么你没有很好地加密它们,因为它们在数学上仍然相关。在我的回答中,我假设你想要加密的平均值作为结果,而不是未加密的平均值。正如incrediman已经指出的那样,能够计算未加密的平均值会泄露信息,这对于加密系统来说是一个非常糟糕的特性。如果他不介意结果仍然是加密的,这将起作用。如果他希望结果被解密,他也可以解密输入…如果我只想“添加”数字,我会使用什么方法?不分组。那么,什么样的1操作同调加密最适合添加加密的数字呢?@heinob:SB如果我错了请纠正我:如果你在[0,P]中有一个大素数P,N个数字N(I),N个密钥s(I)随机,那么N(I)+s(I)mod P被加密。然后sum(N(I)+s(I))mod P是sum(N(I))mod P,用sum(s(I)加密)mod P.听起来对吗?同样,如果模块划分在这里是有意义的,那么它可以工作吗?我需要更多地考虑它。