号化されたままのデータに対して演算(加算や乗算)を行える暗号方式
from phe import paillier # 鍵生成 public_key, private_key = paillier.generate_paillier_keypair() # 平文データ a = 10 b = 20 # 暗号化 enc_a = public_key.encrypt(a) enc_b = public_key.encrypt(b) # 暗号上での加算(a + b) enc_sum = enc_a + enc_b # 暗号上でのスカラー乗算(a * 5) enc_mul = enc_a * 5 # 復号 dec_sum = private_key.decrypt(enc_sum) dec_mul = private_key.decrypt(enc_mul) print("平文 a =", a, ", b =", b) print("復号後 (a + b) =", dec_sum) print("復号後 (a * 5) =", dec_mul)
$ python3 paillier.py
平文 a = 10 , b = 20
復号後 (a + b) = 30
復号後 (a * 5) = 50