This project implements Python wrappers for Homomorphic Encryption libraries, aimed at being more Python friendly.
It currently contains:
- A pybind11 based Python wrapper for Microsoft SEAL in
seal_wrapper
- A Pythonic wrapper for
seal_wrapper
inpyheal/wrapper.py
- A Python ciphertext type of object that allows math operations as if they were python numbers in
pyheal/ciphertext_op.py
- A standard encoder/decoder interface for seal encoders and encryptors for use of the
CiphertextOp
objects inpyheal/encoders.py
.
Tests:
- A partial re-implementation of Microsoft SEAL's examples using
wrapper.py
intests.py
- A large number of tests for PyHEAL and
CiphertextOp
inpyheal/test_pyheal.py
Clone using:
Git v2.13+: git clone --recurse-submodules https://github.com/Accenture/pyheal.git
Git v1.6.5 - v2.12: git clone --recursive https://github.com/Accenture/pyheal.git
For a repository that has already been cloned or older versions of git run:
git submodule update --init --recursive
This project can be built directly using pip3
.
Optionally create and activate a new Python virtual environment using virtualenv
first, for example:
python3 -m virtualenv ./venv --python python3
#Linux
source ./venv/bin/activate
#Windows
#venv\Scripts\activate
Install dependencies and package:
pip3 install .
import pyheal
# Set encryption params + obtain an EncryptorOp object
...
encryptor = EncryptorOp(...)
decryptor = Decryptor(...)
v1 = encryptor.encode(10)
v2 = encryptor.encode(20)
result = v1 + v2
print(decryptor.decrypt(result)) # Prints 30 after decrypt
See example_usage.py for more usage examples.