{ "info": { "author": "Alberto Ibarrondo", "author_email": "ibarrond@eurecom.fr", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: C++", "Programming Language :: Cython", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Security", "Topic :: Security :: Cryptography" ], "description": "# Pyfhel [_v2.0.1_] \n[![Build Status](https://travis-ci.org/ibarrond/Pyfhel.svg?branch=master)](https://travis-ci.org/ibarrond/Pyfhel)\n[![Documentation Status](https://readthedocs.org/projects/pyfhel/badge/?version=latest)](https://pyfhel.readthedocs.io/en/latest/?badge=latest)\n[![PyPI version](https://badge.fury.io/py/Pyfhel.svg)](https://badge.fury.io/py/Pyfhel)\n[![Maintenance](https://img.shields.io/badge/Maintained%3F-yes-brightgreen.svg)](https://GitHub.com/ibarrond/Pyfhel/graphs/commit-activity)\n[![GitHub issues](https://img.shields.io/github/issues/ibarrond/Pyfhel.svg)](https://github.com/ibarrond/Pyfhel/issues)\n[![Python 3](https://pyup.io/repos/github/ibarrond/Pyfhel/python-3-shield.svg)](https://pyup.io/repos/github/ibarrond/Pyfhel/)\n[![License: GPL v3](https://img.shields.io/badge/License-GPL%20v3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\n\n\n**PY**thon **F**or **H**omomorphic **E**ncryption **L**ibraries.\n\n_Note: If you have written any code using Pyfhel, please share it! (feel free to send me a message, I'll credit you for it). This repo is lacking demos, examples and tests. Besides, if you want to join/contribute to develop this library, just [write me!](mailto:ibarrond@eurecom.fr)_\n* **_Status_**: ALPHA.\n* **_Description_**: Allows ADDITION, SUBSTRACTION, MULTIPLICATION, SCALAR PRODUCT and binary operations (AND, OR, NOT, XOR) over encrypted vectors|scalars of integers|binaries. This library acts as optimized Python API for the most advanced C++ HE libraries.\n* **_Language_**: Python (3.4+) & Cython on top of C++17. (_REQUIRED: Python must have been compiled with C++17: g++>=6 | clang++>=5.0, Visual Studio 2017._).\n* **_Docs_**: For now, only the API is documented [[link](https://ibarrond.github.io/Pyfhel)]. Examples are soon to follow.\n* **_Dependencies_**: There are three possible backends, all of them HE libraries in C++:\n \n 1. [SEAL](https://www.microsoft.com/en-us/research/project/simple-encrypted-arithmetic-library/) (no external dependencies). _Version 2 of Pyfhel is currently only supporting SEAL_.\n 2. [HElib](https://github.com/shaih/HElib) (depends on [GMP](http://www.gmplib.org) & [NTL](http://www.shoup.net/ntl/download.html))\n 3. [PALISADE](https://git.njit.edu/palisade/PALISADE.git) (no external dependencies)\n\n## Summary\n**PY**thon **F**or **H**momorphic **E**ncryption **L**ibraries, **Pyfhel** implements functionalities of multiple Homomorphic Encryption libraries such as addition, multiplication, exponentiation or scalar product in Python. **Pyfhel** uses a syntax similar to normal arithmetics (+,-,\\*). This library is useful both for simple Homomorphic Encryption Demos as well as for complex problems such as Machine Learning algorithms.\n\n**Pyfhel** is built on top of **Afhel**, an **A**bstraction **H**momorphic **E**ncryption **L**ibraries in C++. **Afhel** serves as common API for all three backends. Additionally, this project contains a large series of Demos & Tests for **HElib**|**SEAL**, **Afhel** & **Pyfhel**.\n\nLast but not least, we include Makefiles to compile and install **HElib**, **SEAL** and **Afhel** as shared libraries in Ubuntu, which can then be linked to other C++ programs using the tags `-lhelib`, `-lseal` and `-lafhel`.\n\n## Install & Uninstall\nThis project has been uploaded to [PyPI](https://pypi.org/project/Pyfhel/). In order to install it from source (*WARNING! it takes several minutes to compile, be patient!*), run:\n\n\t > pip install Pyfhel\n\nLocally, you can clone this repository and install it by running:\n\n\t > pip install .\n\nTo uninstall, just run:\n\t\n\t > pip uninstall Pyfhel\n\nAlternatively, and only for Ubuntu OS, after cloning you can install and compile all libraries as shared (.so) using the Makefiles on this project. To do so, run inside the `Pyfhel` directory:\n\n\t > ./configure\t\t# Just puts all makefiles in their correct directories\n\t > make\n\t > sudo make install\n\nYou can also install just SEAL and Afhel. Just run `make SEAL|Afhel` in the `Pyfhel` directory and `make install` inside `Pyfhel/Afhel` or `Pyfhel/SEAL` directory respectively. Makefiles also have `clean` and `uninstall` commands, as well as `make sourceFileName_x` command to compile and link a source file (.cpp) with them.\n \n### Development notice\n\nAfter changing Cython files they need to be compiled before re-installing Pyfhel.\nTo do so run:\n\n > python setup.py build --CYTHONIZE\n \n## Project contents\n- `Pyfhel/` contains the source code for Pyfhel, Afhel, SEAL, PALISADE & HElib.\n\n- `docs/` outdated documentation of the project:\n\n - *Doc.md*: Outdated Essential documentation of the project.\n\t - *Doc_API.md*: Outdated comprehensive list of all classes & methods available in Pyfhel.\n - `Helib/`: Up to date docs and images explaining this otherwise undocumented library.\n\n- `Pyfhel/Demos_Tests`, a collection of Demos and Tests. Outdated as of today. Check the `test.py`!\n- `Pyfhel/.Makefiles/Makefile_HElib`, a makefile to compile and install HElib as a dynamic library (`-lhelib`).\n- `Pyfhel/.Makefiles/Makefile_SEAL`, a makefile to compile and install SEAL as a dynamic library (`-lseal`).\n\n## Authors & Acknowledgements\n\n\n- **Authors**: Alberto Ibarrondo [@ibarrond](https://github.com/ibarrond) with Laurent Gomez (SAP) in collaboration with EURECOM ([Melek Onen](http://www.eurecom.fr/~onen/)).\n- Latest release: 03/08/2018\n\nThis library was created originally for the project \"Privacy for Big Data Analytics\" in EURECOM. The SW is based on **[HElib](https://github.com/shaih/HElib) by Shai Halevi**, with touches from **[HEIDE](https://github.com/heide-support/HEIDE) by Grant Frame**, and performance improvements thanks to **[analysis of addition](https://mshcruz.wordpress.com/2017/05/13/sum-of-encrypted-vectors/) by Matheus S.H. Cruz**. In compliance with their respective Licenses, I name all of them in this section. This project could not be possible without them. For any legal disclaimer, please contact the owner of this repository. Also, the same type of license (GNU GPLv3) applies to Afhel & Pyfhel, as mandated.\n\n## Legal disclaimer\n\nPyfhel can be used, modified, copied in any way you see fit. This project is Open Source under the GNU GPLv3 License (LICENSE file), therefore developers that use Pyfhel MUST comply with the following:\n\n 1. Acknowledge and mention the original authors of Pyfhel in any derived development, that is, `Ibarrondo, Laurent (SAP) and Onen (EURECOM)`.\n\n 2. Offer the exact same License, allowing legal permission to copy, distribute and/or modify any SW using Pyfhel. Hence, any software using Pyfhel must remain Open Source.", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ibarrond/Pyfhel", "keywords": "homomorphic encryption cython cryptography", "license": "GNU GPLv3", "maintainer": "", "maintainer_email": "", "name": "Pyfhel", "package_url": "https://pypi.org/project/Pyfhel/", "platform": "", "project_url": "https://pypi.org/project/Pyfhel/", "project_urls": { "Homepage": "https://github.com/ibarrond/Pyfhel" }, "release_url": "https://pypi.org/project/Pyfhel/2.0.1/", "requires_dist": null, "requires_python": "", "summary": "Python for Homomorphic Encryption Libraries", "version": "2.0.1" }, "last_serial": 5251473, "releases": { "2.0.0a2": [ { "comment_text": "", "digests": { "md5": "64e2b051fcabb2e4d4b8f16d35461684", "sha256": "59687537e10420fe95842c84bcb7678f35f0ec337124b5a58f6f3b8b3ecf1cff" }, "downloads": -1, "filename": "Pyfhel-2.0.0a2.tar.gz", "has_sig": false, "md5_digest": "64e2b051fcabb2e4d4b8f16d35461684", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 666834, "upload_time": "2018-08-03T09:46:59", "url": "https://files.pythonhosted.org/packages/37/b4/0239377834ca5915505a14fa80e96028667963523277e03fb6c2d25d0366/Pyfhel-2.0.0a2.tar.gz" } ], "2.0.0a3": [ { "comment_text": "", "digests": { "md5": "0c326dc3955b4b066556ead33fbb70a6", "sha256": "1ab713a77a2233c3d6943ca6b4eeb4663403e6b1aaf0a7b7d68cb7c977a98b4c" }, "downloads": -1, "filename": "Pyfhel-2.0.0a3.tar.gz", "has_sig": false, "md5_digest": "0c326dc3955b4b066556ead33fbb70a6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 744925, "upload_time": "2018-08-09T14:55:44", "url": "https://files.pythonhosted.org/packages/68/7f/7acc081a6de56bc7fbc0233a41ecd9090eaac16f0ee16fa45f9d27b2808c/Pyfhel-2.0.0a3.tar.gz" } ], "2.0.0a4": [ { "comment_text": "", "digests": { "md5": "567bbbb468ca2107c453d532a0e5f043", "sha256": "0f3dbc416939f23e3a6448811156db53d4ab1b5cea33651df8f69786fcbae346" }, "downloads": -1, "filename": "Pyfhel-2.0.0a4.tar.gz", "has_sig": false, "md5_digest": "567bbbb468ca2107c453d532a0e5f043", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 745299, "upload_time": "2018-08-14T13:32:39", "url": "https://files.pythonhosted.org/packages/36/ff/dddccc7f782acb14f62f2cd66bf54b90269fd7a30e9771a1378df2ffca9a/Pyfhel-2.0.0a4.tar.gz" } ], "2.0.0a5": [ { "comment_text": "", "digests": { "md5": "610eea6f1b4f641e3393ddff9145bf1d", "sha256": "eb823535a8a4884e56835d758496c09bf1f2d96a1d5b58e5661e2c793c43659f" }, "downloads": -1, "filename": "Pyfhel-2.0.0a5.tar.gz", "has_sig": false, "md5_digest": "610eea6f1b4f641e3393ddff9145bf1d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 675493, "upload_time": "2018-11-17T21:52:09", "url": "https://files.pythonhosted.org/packages/ad/ec/2afc4f491148617df2964eae7879b7b195a1cdeda66e552258b8cc6e8961/Pyfhel-2.0.0a5.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "1297bc635a1125911d8a4560f1d8bc1e", "sha256": "81e322a8fab97e77ec431d87a43386d054cd781c626c98dfc6fe2342c452873a" }, "downloads": -1, "filename": "Pyfhel-2.0.1.tar.gz", "has_sig": false, "md5_digest": "1297bc635a1125911d8a4560f1d8bc1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1224835, "upload_time": "2019-05-10T09:50:37", "url": "https://files.pythonhosted.org/packages/ac/67/742ea80f9ccbfe0a3c8730739b81b050b73193525844100918894ba3554e/Pyfhel-2.0.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "1297bc635a1125911d8a4560f1d8bc1e", "sha256": "81e322a8fab97e77ec431d87a43386d054cd781c626c98dfc6fe2342c452873a" }, "downloads": -1, "filename": "Pyfhel-2.0.1.tar.gz", "has_sig": false, "md5_digest": "1297bc635a1125911d8a4560f1d8bc1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1224835, "upload_time": "2019-05-10T09:50:37", "url": "https://files.pythonhosted.org/packages/ac/67/742ea80f9ccbfe0a3c8730739b81b050b73193525844100918894ba3554e/Pyfhel-2.0.1.tar.gz" } ] }