gpt4 book ai didi

c++ - helib 什么时候需要自举?

转载 作者:搜寻专家 更新时间:2023-10-31 00:27:59 24 4
gpt4 key购买 nike

我的印象是,某种程度的同态加密方案允许您执行任意数量的加法,然后执行一次乘法,之后噪声变得太大。但是当我尝试以下操作时,它似乎起作用了:

publicKey.Encrypt(ctx1, to_ZZX(2));
publicKey.Encrypt(ctx2, to_ZZX(3));
publicKey.Encrypt(ctx3, to_ZZX(10));

Ctxt ctRes = ctx1;
ctRes += ctx2;
ctRes *= ctx3;
ctRes *= ctx3;

ZZX ptRes;
secretKey.Decrypt(ptRes, ctRes);
std::cout << "(2 + 3) * 10 * 10= " << ptRes[0] << std::endl;

再执行一次乘法会产生错误的结果。

在需要引导之前允许的操作数量和/或种类是否可预测?它取决于什么?基础值或任何初始化参数?

最佳答案

您的特定实例可以执行的计算量在很大程度上取决于用于初始化系统的参数。通常,乘法(或涉及乘法的运算)成本最高。

“L”参数表示模数链中的级别数,是在需要自举之前可以执行多少次计算(特别是乘法)的最重要因素。尝试将其设置为更大的数字。

我强烈建议通读 HElib 的 src 文件夹中的 Test_General.cpp,可以在这里下载:https://github.com/shaih/HElib .您可以在该文件夹中运行“make”以生成名为 Test_General_x 的可执行文件并使用“Test_General_x L=10 R=5”运行它以将 L 设置为 10 并运行 5 轮这些计算(您可以在源代码中更改) .尝试各种参数,将 L 更改为 15,20,...,60,或更改其他参数,看看它如何影响运行时、您可以执行的计算数量和解密错误。

如果您需要引导,您可以查看同一个 src 文件中的 params.cpp,并根据 params.cpp 底部的说明运行“params_x ...”来测试引导的各种参数

关于c++ - helib 什么时候需要自举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47027497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com