使用 SEAL 将分数转换为二进制

fractional to binary with SEAL

我可以将小数编码的密文转换为二进制编码的密文吗?

假设我用小数编码对 5 进行了加密。那么,我可以一个由E(1)、E(0)、E(1)组成的数组吗? (5 = 101)

让我们尝试用明文来解决这个问题。那我们可以尝试用密文来解。

  1. 如果 "a binary encoded one" 你的意思是 5 的二进制编码,那么是的。小数编码的5和二进制编码的5都是明文x^2+1.

  2. 如果"an array consisting of E(1), E(0), E(1)"指的是3个密文,分别解密为1、0、1,则否

从其fractional/integer/binary编码中提取数字m的第k位(由m_k表示)M(x)=m_{n-1}x^ {n-1}+...+m_kx^k+...+m_0,等价于找到一个函数 F 使得对于给定的 k 和任何 m , F(M(x))=m_k 在 \ZZ_2[x]/(x^n+1) 中。找到这样的函数并不容易。即使它存在,它也可以是 2^n 次多项式的形状,这太深而无法同态求值。

  1. 如果 "an array consisting of E(1), E(0), E(1)" 你的意思是 1 个密文解密为向量 [1, 0, 1],则否。

首先必须解决上述情况 2 并成功提取那些单独的位。其余的纯粹是对密文进行批处理,这可以在 SEAL 中的 rotate_rows 的帮助下轻松完成。