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.2.0.tar.gz
(5.0 kB
view hashes)
Built Distribution
Close
Hashes for rens_paillier-1.2.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8ab79776dc546d7a679b99c2e5f64f69ca92a3ae1aaa335c5c214593b471c8a0 |
|
MD5 | 6d35e44794e3f5fcfb487466cf3f01f5 |
|
BLAKE2b-256 | 5441f71c73a5f0466b50ece2c6e8f036e2f4e20c4c1da6c16851dbd03af5a9d8 |