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-1.0.0.tar.gz
(4.8 kB
view hashes)
Built Distribution
Close
Hashes for rens_paillier-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 45ee6981378e06c003827caaf2ba439c2ee65f41c79566103a995c8fe5850431 |
|
MD5 | bb088c5694607dd6d0ece79c21823318 |
|
BLAKE2b-256 | d8986f268b26e77e6cb17d2efd5c0fd332f207c55c81ae27e8fec9865c7317cc |