一、C++(该方案只实现了加密以及解密)
1、git clone https://github.com/klei0229/paillier.git
2、下载GMP与NTL包;
下载版本以及操作参见https://blog.csdn.net/corewith/article/details/50937206
3、原本的Makefile文件在我这里总是编译不通过,修改后才编译成功;
新的Makefile:
# The following all worked on my machine: #g++ -g $< -o $@ -lntl -lgmp #g++ -g $< -o $@ -lntl #g++ -g $< -o $@ # # - ntl: Number theory library # - gmp: Arbitrary precision arithmetic. # - ssl + crytpo: For openssl. Installed on most linux machines, and # has hashing algorithms. # - m: From what I can tell, libm is an implementation of C math # functions. Why would we need this? LIBS:=ntl gmp m ssl crypto LIBFLAGS:=$(addprefix -l, $(LIBS)) main : main.cpp paillier.cpp g++ -g -Wall -Wpedantic -std=c++11 $^ -o $@ $(LIBFLAGS) -rdynamic /usr/local/lib/libntl.a
二、C++(该方案实现了完整的同态加密)
1、git clone https://github.com/abb-iss/ophelib.git
2、Quick Start: See BUILD
3、ophelib/CMakeList.txt需要添加如下语句:
SET(CMAKE_C_COMPILER g++) if(CMAKE_COMPILER_IS_GNUCXX) add_compile_options(-std=c++11) message(STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX)
4、 ophelib/sample/CMakeList.txt需要添加如下语句:
SET(LIBNTL_INCLUDE_DIR "/usr/local/lib") SET(CMAKE_C_COMPILER g++) if(CMAKE_COMPILER_IS_GNUCXX) add_compile_options(-std=c++11) message(STATUS "optional:-std=c++11") endif(CMAKE_COMPILER_IS_GNUCXX)
注:不知道为什么,make test无法通过第四个测试;但是./helloworld可以正常运行;
三、python
1、git clone https://github.com/n1analytics/python-paillier.git
震惊的是,相同的密钥长度下,python版本的运算速度居然比C++版本的快。。。