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.
Release files for paillierlib 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| paillierlib-0.0.2.tar.gz | 2.7 kB | Details |
Release files / paillierlib-0.0.2.tar.gz
| Download URL | paillierlib-0.0.2.tar.gz |
|---|---|
| Size | 2.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
80c2db03dc136c82a59039b3e7a4dcc0ed3cec14b8732efb996d027999ed03f6
|
|
BLAKE2b-256 checksum How to use checksums |
22b7b1731249cafc33326e66e350588244ecbcae8810f615226283937c34a415
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|