同态加密库HElib快速入门

本文介绍HElib,IBM的C++同态加密库。HElib使用vector<long>进行加密操作,处理包括加解密和算术运算。关键类包括FHEcontext、ZZX、FHESecKey、FHEPubKey和EncryptedArray。文章通过示例展示加密过程,并讨论了一个可能的乘法运算bug,涉及PrimeSet成员变化影响解密结果的问题。
摘要由CSDN通过智能技术生成

HElib是IBM用C++写成的一个开源的同态加密库。至于同态加密是什么,网上有一堆教程,无须赘述。

对于同态加密库HElib而言,所有的输入输出都表示成为vector<long>的形式,vector<long>的大小和HElib的初始化参数有关。需要将原始数据全部全部转换成vector<long>的形式,至于如何转换,与具体的业务逻辑有关系,HElib并不关心具体的转换方式,HElib所做的只是对vector<long>进行加解密,以及进行加减乘等运算。

首先先介绍一下HElib的几个重要的类:

FHEcontext类:初始化所必须的类,程序根据初始化的参数生成FHEcontext对象,进而通过FHEcontext对象生成同态加密的公私钥。

ZZX类:生成EncryptedArray所必须的。

FHESecKey类:同态加密私钥类

FHEPubKey类:同态加密公钥类

EncryptedArray类:贯穿整个同态加密的代码,用于将vector<long>编码成同态加密的明文对象,对于数据进行同态加密和解密,用于将明文对象解码成vector<long>。

NewPlaintextArray类:明文对象,输入vector<long>转换成明文对象进而进一步被HElib处理,如果利用cout将NewPlaintextArray对象输出的话也是以向量形式输出,维度与对应位置的元素与vector<long>相同。提供了加、减、乘、移位、异或等运算。加减乘运算即向量对应位置的元素进行加减乘。

Ctxt对象:同态加密的密文对象,NewPlaintextArray类

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值