我使用paillier密码系统来加密和解密随机数据,这些数据最初是以字节数组的形式,然后我将它们转换为大整数,如果字节数组变成负大整数,则解密数和输入数不同(基本上它不适用于负大整数)。有没有办法让这项工作不检查输入是否会变为正面或负面?
答案 0 :(得分:0)
不,你不能使用负数,因为一切都以模数n计算。
是的,您可以使用任何数组,只要转换为数字时,该值是小于n的数字。
为此,您可以使用new BigInteger(1, plaintext)
,这将始终产生正数。第一个参数是符号。
您可能需要对特定结构进行编码,例如:最高有效位的零位值(消息 - >编码 - >转换为数字 - &gt; Paillier加密 - &gt;编码密文和解码密文 - &gt; Paillier解密 - &gt;解码 - &gt;消息)。< / p>
有关如何将数据编码/解码为数字的示例,请参阅I2OSP和OS2IP。