A library for Partially Homomorphic Encryption in Python
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
examples
phe
third_party
.gitignore
.travis.yml
CHANGELOG.rst
LICENSE.txt
README.rst
requirements.txt
setup.cfg
setup.py

README.rst

python-paillier Latest released version on PyPi

CI status of Master
Documentation Status
Requirements Status of master

A Python 3 library for Partially Homomorphic Encryption.

The homomorphic properties of the paillier crypto system are:

  • Encrypted numbers can be multiplied by a non encrypted scalar.
  • Encrypted numbers can be added together.
  • Encrypted numbers can be added to non encrypted scalars.

Running unit tests

python setup.py test

Or use nose:

nosetests

Note related to gmpy2

gmpy2 is not required to use the library, but is preferred. A pure Python implementation is available but gmpy2 drastically improves performances. As indication on a laptop not dedicated to benchmarking, running the example examples/federated_learning_with_encryption.py provided in the library took: - 4.5s with gmpy2 installed - 35.7s without gmpy2 installed

However, gmpy2 is a requirement to run the tests.

Code History

Developed at Data61 | CSIRO.

Parts derived from the Apache licensed Google project: https://code.google.com/p/encrypted-bigquery-client/

No audit

This code has neither been written nor vetted by any sort of crypto expert. The crypto parts are mercifully short, however.