半同态加密paillier 示例

安装phe前先安装gmpy2

轮子大全

同态加密提供了一种对加密数据进行处理的功能, 是一种允许对密文进行计算操作,并生成加密结果的加密技术。在 密文上获得的计算结果被解密后与在明文上的计算结果相匹配,就如同对明文执行了一样的计算操作。

半同态加密paillier 示例_第1张图片 同态

Paillier加密算法只支持加法同态和标量乘法同态,不支持乘法同态,更不支持复杂的指数和对数运算

半同态加密paillier 示例_第2张图片

    1. D(E(a) * E(b)) = a + b
    2. D(E(a)**b)     = a * b

标量乘法同态:对于任意常数k,满足E(km)=k×E(m)

同态加密算法保证对联合密文的解密结果等价于联合明文。若存在同态加密算法f,针对明文A和B,加密后分别得到A'=f(A), B'=f(B), 将其和A'+B'解密后得到A+B,则同态加密算法f被成为加法同态加密算法。

在使用Paillier算法进行加密和解密运算时,会涉及大量的大素数幂运算,因此中间结果很可能发送越界,通常会出现下面的错误。

一种有效的解决方法是,当加密迭代到达一定的轮数之后,重新加密加密数据。

	#产生1024位公私钥对
	public_key, private_key = paillier.generate_paillier_keypair(n_length=1024)
#加密向量
def encrypt_vector(public_key, x):
	return [public_key.encrypt(i) for i in x]

半同态加密paillier 示例_第3张图片

半同态加密paillier 示例_第4张图片

numpy可视化tutorial

转置 

半同态加密paillier 示例_第5张图片

点乘

半同态加密paillier 示例_第6张图片

np.sum(a, axis=1) ------->行求和

半同态加密paillier 示例_第7张图片

半同态加密paillier 示例_第8张图片

半同态加密paillier 示例_第9张图片

半同态加密paillier 示例_第10张图片

你可能感兴趣的:(密码学,同态加密)