本文共 740 字,大约阅读时间需要 2 分钟。
如果我们有一个加密函数 f , 把明文A变成密文A’, 把明文B变成密文B’,也就是说 f(A) = A’ , f(B) = B’ 。另外我们还有一个解密函数 f^-1 能够将 f 加密后的密文解密成加密前的明文。
对于一般的加密函数,如果我们将A’和B’相加,得到C’。我们用 f^-1 对C’进行解密得到的结果一般是毫无意义的乱码。
但是,如果 f 是个可以进行同态加密的加密函数, 我们对C’使用 f^-1 进行解密得到结果C, 这时候的C = A + B。这样,数据处理权与数据所有权可以分离,这样企业可以防止自身数据泄露的同时,利用云服务的算力。
a) 如果满足f (A) + f(B) = f(A+B) , 我们将这种加密函数叫做加法同态 ;
b) 如果满足f (A) × f(B) = f(A×B),我们将这种加密函数叫做乘法同态。如果一个加密函数f只满足加法同态,就只能进行加减法运算;
如果一个加密函数f只满足乘法同态,就只能进行乘除法运算;
如果一个加密函数同时满足加法同态和乘法同态,称为全同态加密。那么这个使用这个加密函数完成各种加密后的运算(加减乘除、多项式求值、指数、对数、三角函数)。
第一个满足加法和乘法同态的同态加密方法直到2009年才由Craig Gentry提出。
可在github上搜索“paillier”,有好多开源库。
转自:https://blog.csdn.net/jason_cuijiahui/article/details/79121702