pailler 密码系统可以加密和解密负大整数吗?

Can pailler cryptosystem encrypt and decrypt negative big integers?

我使用 paillier 密码系统加密和解密随机数据,这些数据首先是字节数组的形式,然后我将它们转换为大整数,如果字节数组变成负大整数,则解密数字和输入数字是不同的(基本上它不适用于负大整数)。有没有办法在不检查输入是正数还是负数的情况下完成这项工作?

不,你不能使用负数,因为一切都是以 n 为模计算的。

是的,你可以使用任何数组,只要转换为数字时的值是小于 n 的数字即可。

为此,您可以使用 new BigInteger(1, plaintext),它始终会产生正数。第一个参数是符号。

您可能需要对特定结构进行编码,例如最高有效位的位值为零(消息->编码->转换为数字-> Paillier加密->编码密文并解码密文-> Paillier解密->解码->消息)。

有关如何将数据编码/解码为数字的示例,请参阅 I2OSP 和 OS2IP。