Paillier encryption
Project description
Paillier encryption
python3.8
package for Paillier encryption.
Example usage
Setup
from paillier.keygen import generate_keys
from paillier.crypto import encrypt, decrypt
pk, sk = generate_keys()
Basic encryption and decryption
m1 = 45336
ciphertext = encrypt(pk, m1)
assert m1 == decrypt(pk, sk, ciphertext)
Homomorphic things
from paillier.crypto import secure_addition, scalar_multiplication, secure_subtraction
n, _ = pk
m2 = 30381
# Secure addition
e1 = encrypt(pk, m1)
e2 = encrypt(pk, m2)
addition = secure_addition(e1, e2, n)
assert m1 + m2 == decrypt(pk, sk, addition)
# Scalar multiplication
k = 23 # some scalar
e1 = encrypt(pk, m1)
multiplied = scalar_multiplication(e1, k, n)
assert (m1 * k) % n == decrypt(pk, sk, multiplied)
# Secure subtraction
assert m1 > m2, "m2 should be bigger than m1 in order to subtract m2 from m1"
e1 = encrypt(pk, m1)
e2 = encrypt(pk, m2)
subtracted = secure_subtraction(e1, e2, n)
assert m1 - m2 == decrypt(pk, sk, subtracted)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
rens-paillier-1.0.2.tar.gz
(5.0 kB
view hashes)
Built Distribution
Close
Hashes for rens_paillier-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ae72056d372d39ccb0a72b47f9e0199b1306edd69cee08be2b24435f3576872 |
|
MD5 | bf451d3348d45a4af3719dfbdfb6910e |
|
BLAKE2b-256 | a448a49054aa72049c7703ccb323ead45cf978b72480c1d2f700eb38541ce05c |