我想做一件非常简单的事情:
给定两个向量,我想加密它们并进行一些计算,然后解密结果并获得两个向量之间的内积。
你能推荐一些可以做这件事的图书馆吗?任何其他材料也会对我有所帮助。
我找到了HELIB,但我仍然不知道这是否是我能做的最好的。你会推荐这个图书馆吗?为了我的目的,你知道更好的吗?我希望尽可能快地完成最大的矢量维度。
我只有加密的基本知识,所以我希望尽可能多地使用它作为黑盒子,而不需要花费太多精力在它背后的数学上。
感谢您的帮助!
答案 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