Paillier encryption
Project description
python3.8 package for the 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-0.2.tar.gz
(5.4 kB
view hashes)
Built Distribution
Close
Hashes for rens_paillier-0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e52c3a22fa1c32e60b8aef754ac9f2ee5103a5c49cc80991a4908edba12935ab |
|
MD5 | aae710eb669221292ef5fa13911b53ac |
|
BLAKE2b-256 | a49fcb66411900551f521232801087bf2b1f63b3a0f68bc9d80117d47d319f8d |