// generate the key pair for encrypt and decrypt
KeyPair keypair = PaillierKeyPair.generateGoodKeyPair();
RSAPublicKey pubKey = (RSAPublicKey)keypair.getPublic();
RSAPrivateKey priKey = (RSAPrivateKey)keypair.getPrivate();
// encrypt the first number with public key
BigInteger i1 = BigInteger.valueOf(1000000);
String c1 = PaillierCipher.encrypt(i1, pubKey);
// encrypt the second number with same public key
BigInteger i2 = BigInteger.valueOf(2012012012);
String c2 = PaillierCipher.encrypt(i2, pubKey);
// paillier add with numbers
String c3 = PaillierCipher.ciphertextAdd(c1,c2);
// decrypt the result
BigInteger o3 = PaillierCipher.decrypt(c3, priKey);
Cpp接口说明
密文同态加接口
接口名称:paillierAdd
接口功能说明:加法同态接口
输入
类型
说明
cipher1
string
同态加密后的操作数1
cipher2
string
同态加密后的操作数2
输出
类型
说明
返回值
string
成功:密文, 失败:空串
编译运行
# 假设当前在paillier-lib目录
mkdir build && cd build
# CentOS请使用cmake3
cmake ..
# 编译paillierCpp库以及测试代码
make
# 运行测试代码
./testAdd
paillier-lib
paillier同态加密算法库,具体包括:
java库:实现了完整的paillier同态库,可完成加解密和同态加运算。
cpp接口:提供同态加接口,核心算法由c语言实现,并用c++实现了调用协议的封装。
FISCO BCOS隐私模块中同态加密的预编译合约便是调用此cpp同态接口。java同态库和cpp同态接口的密文封装协议是一致的, 即通过java同态库生成的密文可以直接调用cpp同态接口完成加同态运算,生成的同态密文可以调用java同态库解密。
关键特性
Java库说明
公私钥模块(PaillierKeyPair)
同态算法模块(PaillierCipher)
使用教程
生成jar包
生成的jar文件位于paillierJava/dist目录
开发示例
Cpp接口说明
密文同态加接口
编译运行
贡献代码
加入社区
FISCO BCOS开源社区是国内活跃的开源社区,社区长期为机构和个人开发者提供各类支持与帮助。已有来自各行业的数千名技术爱好者在研究和使用FISCO BCOS。如您对FISCO BCOS开源技术及应用感兴趣,欢迎加入社区获得更多支持与帮助。
License
paillier-lib的开源协议为APACHE LICENSE 2.0. 详情参考LICENSE。