同态加密库OpenFHE之代码详解

0 摘要

        本文主要分析OpenFHE库中测试用例所使用的代码,通过学习测试用例的编程思路,了解OpenFHE的使用方法以及调用逻辑。

        这段代码采用了BFVrns方案以进行整数数据的同态运算,接下来我将会对各个段落的功能进行分析。

1 代码详解

1.1 引入OpenFHE库

#include "openfhe.h"
using namespace lbcrypto;

        这部分代码引入了OpenFHE库,并使用其命名空间。

1.2 定义主函数

int main() {
  

        定义主函数,在这部分进行同态加密操作。

1.3 设置加密参数

    // Sample Program: Step 1: Set CryptoContext
    CCParams<CryptoContextBFVRNS> parameters;
    parameters.SetPlaintextModulus(65537);
    parameters.SetMultiplicativeDepth(2);

    CryptoContext<DCRTPoly> cryptoContext = GenCryptoContext(parameters);
    cryptoContext->Enable(PKE);
    cryptoContext->Enable(KEYSWITCH);
    cryptoContext->Enable(LEVELEDSHE);

        此代码段设置了加密上下文,指定了明文模数和乘法深度等参数,并启用了公钥加密(PKE)、密钥切换(KEYSWITCH)和分层同态加密(LEVELEDSHE)功能。

1.4 密钥生成

    // Sample Program: Step 2: Key Generation
    KeyPair<DCRTPoly> keyPair;
    keyPair = cryptoContext->KeyGen();
    cryptoContext->EvalMultKeyGen(keyPair.secretKey);
    cryptoContext->EvalRotateKeyGen(keyPair.secretKey, {1, 2, -1, -2});

        生成公私钥对、重新线性化密钥和旋转评估密钥。

1.5 加密

    // Sample Program: Step 3: Encryption
    std::vector<int64_t> vectorOfInts1 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
    Plaintext plaintext1 = cryptoContext->MakePackedPla
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值