paillier同态加密python 代码
时间: 2024-01-11 14:03:44 浏览: 163
以下是使用PyCryptodome库实现Paillier同态加密的Python代码:
```python
from Cryptodome.Util import number
from Cryptodome.Math.Numbers import Integer
from Cryptodome.PublicKey import Paillier
# 生成Paillier密钥对
key = Paillier.generate(1024)
# 获取公钥和私钥
pub_key = key.publickey()
priv_key = key
# 加密和解密
msg = 123456789
enc_msg = pub_key.encrypt(msg)
dec_msg = priv_key.decrypt(enc_msg)
print("Original message: ", msg)
print("Encrypted message: ", enc_msg.ciphertext())
print("Decrypted message: ", dec_msg)
# 同态加法
x = 1234
y = 5678
enc_x = pub_key.encrypt(x)
enc_y = pub_key.encrypt(y)
enc_sum = enc_x + enc_y
dec_sum = priv_key.decrypt(enc_sum)
print("x: ", x)
print("y: ", y)
print("Encrypted sum: ", enc_sum.ciphertext())
print("Decrypted sum: ", dec_sum)
# 同态乘法
enc_prod = enc_x * 2
dec_prod = priv_key.decrypt(enc_prod)
print("Encrypted product: ", enc_prod.ciphertext())
print("Decrypted product: ", dec_prod)
```
在上述代码中,我们首先使用`Paillier.generate()`函数生成一个Paillier密钥对。然后使用公钥加密一个消息,再使用私钥解密该消息。接着,我们展示了如何使用Paillier同态加密实现同态加法和同态乘法。
需要注意的是,Paillier同态加密的实现比较耗时,因此在实际使用中需要考虑效率问题。
阅读全文