内积 - 同态加密库

时间:2015-07-03 14:43:27

标签: encryption cryptography

我想做一件非常简单的事情:

给定两个向量,我想加密它们并进行一些计算,然后解密结果并获得两个向量之间的内积。

你能推荐一些可以做这件事的图书馆吗?任何其他材料也会对我有所帮助。

我找到了HELIB,但我仍然不知道这是否是我能做的最好的。你会推荐这个图书馆吗?为了我的目的,你知道更好的吗?我希望尽可能快地完成最大的矢量维度。

我只有加密的基本知识,所以我希望尽可能多地使用它作为黑盒子,而不需要花费太多精力在它背后的数学上。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用Python3中的同态加密库Pyfhel来做到这一点。只需使用pip install Pyfhel安装它并创建一个简单的演示:

from Pyfhel import Pyfhel, PyCtxt

he = Pyfhel()        # Object in charge of all homomorphic operations
he.contextGen(10000) # Choose the maximum size of your values
he.keyGen(10000)     # Generate your private/public key pair

# Now to the encryption/operation/decryption
v1 = [5.34, 3.44, -2.14, 9.13]
v2 = [1, 2.5, -2.1, 3]

p1 = [he.encrypt(val) for val in v1]
p2 = [he.encrypt(val) for val in v2]

pMul = [a*b for a,b in zip(p1, p2)]

pScProd = [pMul[0]+p for p in pMul[1:]

round(he.decrypt(pScProd), 3)
#> 45.824