-
Notifications
You must be signed in to change notification settings - Fork 139
Open
Description
Hi,
I try to run this example using phe and numpy, but have Overflow when iterate some loops
Can you help me?
Thanks!
import phe as paillier
import numpy as np
init_values = [['7.44012909e-02', '-4.46416365e-02', '1.14508998e-01', '2.87580964e-02',
'2.45741445e-02', '2.49905934e-02', '1.91869970e-02', '-2.59226200e-03',
'-6.09254186e-04', '-5.21980442e-03', '1.00000000e+00'],
['1.62806757e-02', '5.06801187e-02', '-4.60850009e-02', '1.15437429e-02',
'-3.32158756e-02', '-1.60318551e-02', '-1.02661054e-02', '-2.59226200e-03',
'-4.39854026e-02', '-4.24987666e-02', '1.00000000e+00'],
['1.62806757e-02', '-4.46416365e-02', '2.07393477e-02', '2.18723550e-02',
'-1.39525355e-02', '-1.32135190e-02', '-6.58446761e-03', '-2.59226200e-03',
'1.33159679e-02', '4.03433716e-02', '1.00000000e+00'],
['5.98711371e-02', '5.06801187e-02', '1.64280994e-02', '2.87580964e-02',
'-4.14715927e-02', '-2.91840905e-02', '-2.86742944e-02', '-2.59226200e-03',
'-2.39668149e-03', '-2.17882321e-02', '1.00000000e+00'],
['4.53409833e-02', '5.06801187e-02', '6.06183944e-02', '3.10533436e-02',
'2.87020031e-02', '-4.73467013e-02', '-5.44457591e-02', '7.12099798e-02',
'1.33598980e-01', '1.35611831e-01', '1.00000000e+00']]
def divide_values_by_scalar(values, scalar):
return np.array(values) / scalar
def encrypt_vector(public_key, x):
return [public_key.encrypt(i) for i in x]
def decrypt_vector(private_key, x):
return [private_key.decrypt(i) for i in x]
if __name__ == "__main__":
float_values = [float(v) for v_array in init_values for v in v_array]
pubkey, privkey = paillier.generate_paillier_keypair()
to_np_values = np.array(float_values)
encrypted_values = encrypt_vector(pubkey, to_np_values)
divided_values = encrypted_values
for i in range(1, 100):
divided_values = divide_values_by_scalar(divided_values, 1)
print(decrypt_vector(privkey, divided_values))Traceback (most recent call last):
File "/home/agustinrojas/Repositories/agrojas/fiuba/federated-learning-poc/commons/test.py", line 41, in <module>
print(decrypt_vector(privkey, divided_values))
File "/home/agustinrojas/Repositories/agrojas/fiuba/federated-learning-poc/commons/test.py", line 30, in decrypt_vector
return [private_key.decrypt(i) for i in x]
File "/home/agustinrojas/Repositories/agrojas/fiuba/federated-learning-poc/commons/test.py", line 30, in <listcomp>
return [private_key.decrypt(i) for i in x]
File "/home/agustinrojas/Repositories/agrojas/fiuba/federated-learning-poc/server/venv/lib/python3.6/site-packages/phe/paillier.py", line 287, in decrypt
return encoded.decode()
File "/home/agustinrojas/Repositories/agrojas/fiuba/federated-learning-poc/server/venv/lib/python3.6/site-packages/phe/encoding.py", line 221, in decode
raise OverflowError('Overflow detected in decrypted number')
OverflowError: Overflow detected in decrypted number
Metadata
Metadata
Assignees
Labels
No labels