可以计算三个加密整数的平均值吗?对加密方法没有限制。这一点只是隐藏三个数字并找到平均值。
答案 0 :(得分:12)
您正在寻找的内容称为Homomorphic Encryption:一种加密方案,允许您对加密数据执行操作,并将加密结果作为结果。
这样的方案允许您将加密数据提供给第三方,然后第三方可以为您进行计算而不知道他们在计算什么。
在您的情况下,您需要两个操作:添加和分割。直到最近,同态加密方案通常仅支持1次操作。但是在2009年9月IMB announced the first fully homomorphic cryptosystem。不久之后的其他研究published another system。
这些密码系统可能能够做到你想要的,但它是所有尖端的计算机科学研究。
答案 1 :(得分:4)
解密数字,然后计算他们的平均值。
答案 2 :(得分: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个根)。不幸的是,在模运算中计算立方根是非常重要的。
答案 3 :(得分:1)
使用理想的加密方法:否。
使用大多数真实世界的加密方法:否。
使用一些非常简单的撤消混淆方法,特别设计为允许平均:是。
调用后一种方法“加密”确实会使用错误的术语。
如果你可以计算加密数字的平均值而不解密它们,这将使原始数字的解密变得非常容易,所以如果这适用于任何严重的加密算法,我会非常惊讶。
答案 4 :(得分:0)
一般情况下,如果加密,三个加密号码不应该保持相同的顺序,所以我很确定你必须解密它们并计算平均值。
答案 5 :(得分:0)
如果且仅当加密方法是一对一的数学函数时,则可以在数字加密时这样做。
例如,如果我非常不安全的加密方法是将每个数字乘以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.
唯一的另一种可能性是首先解密数字。