【Python】準同型暗号(Homomorphic Encryption)

号化されたままのデータに対して演算(加算や乗算)を行える暗号方式

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