paillier密码系统的一种简单实现
paillierlib的Python项目详细描述
paillier库
这个包提供了一个使用gmpy2的paillier密码系统的简单实现。
用法
from paillierlib import paillier
from gmpy2 import mpz
key_pair = paillier.keygen() # Optional param.: bit size (default = 2048)
m1 = mpz(10)
m2 = mpz(1)
c1 = paillier.encrypt(m1, key_pair.public_key)
c2 = paillier.encrypt(m2, key_pair.public_key)
# Example homomorphic operations
# Addition
paillier.decrypt(c1 + c2, key_pair.private_key) # => 11
paillier.decrypt(c1 - c2, key_pair.private_key) # => 9
paillier.decrypt(c1 + c1 + c2, key_pair.private_key) # => 21
# Multiplication (ciphertext with plaintext)
m3 = mpz(2)
paillier.decrypt(c1 * m3, key_pair.private_key) # => 20
要求
GMPY2(测试版本2.0.8)
计划工作
- 编码输入,而不是要求gmp-mpz对象。