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