paillier-lib
This package provides a simple implementation of the Paillier cryptosystem using gmpy2.
Usage
from paillierlib import paillier
from gmpy2 import mpz
key_pair = paillier.keygen() # Optional param.: bit size (default = 2048)
m1 = mpz(10)
m2 = mpz(1)
c1 = paillier.encrypt(m1, key_pair.public_key)
c2 = paillier.encrypt(m2, key_pair.public_key)
# Example homomorphic operations
# Addition
paillier.decrypt(c1 + c2, key_pair.private_key) # => 11
paillier.decrypt(c1 - c2, key_pair.private_key) # => 9
paillier.decrypt(c1 + c1 + c2, key_pair.private_key) # => 21
# Multiplication (ciphertext with plaintext)
m3 = mpz(2)
paillier.decrypt(c1 * m3, key_pair.private_key) # => 20
Requirements
gmpy2 (tested v2.0.8)
Planned Work
- Encode inputs, rather than requiring GMP MPZ objects.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
paillierlib-0.0.2.tar.gz
(2.7 kB
view details)
File details
Details for the file paillierlib-0.0.2.tar.gz.
File metadata
- Download URL: paillierlib-0.0.2.tar.gz
- Upload date:
- Size: 2.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80c2db03dc136c82a59039b3e7a4dcc0ed3cec14b8732efb996d027999ed03f6
|
|
| MD5 |
a26b4506e559fc74d5ec2ccdd04789a9
|
|
| BLAKE2b-256 |
22b7b1731249cafc33326e66e350588244ecbcae8810f615226283937c34a415
|