0

我正在使用这个参数设置:

parms.set_poly_modulus("1x^2048 + 1"); // n = 2048
parms.set_coeff_modulus(coeff_modulus_128(2048)); // q = 54-bit prime
parms.set_plain_modulus(1 << 8); // t = 256

使用此编码FractionalEncoder encoder(context.plain_modulus(), context.poly_modulus(), A, B, C);A=512, B=128C=2

如果我理解正确,那么AB的设置取决于n的大小,这意味着 A + B <= 2048 必须成立,对吗?

使用上面的poly_moduluscoeff_modulisplain_modulus设置决定AB的大小时,一般规则是什么?由于选择较小的值并没有充分利用明文大小的潜力。我的猜测是A应该增加,因为B仅用于小数部分的精度。

4

1 回答 1

0

A 和 B 取决于您需要多少精度以及计算的复杂程度:更大的 A 和 B 会使加密更精确,它们也会使允许的乘法深度更小。后者是分数编码器表现不佳的原因之一。根据您的任务,您可能希望继续关注并使用包含新编码方法的下一个版本 (SEAL 3.0)。

于 2018-10-07T19:53:40.107 回答