【问题标题】:Can pailler cryptosystem encrypt and decrypt negative big integers?pailler密码系统可以加密和解密负大整数吗?
【发布时间】:2018-07-28 15:01:10
【问题描述】:

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

【问题讨论】:

  • 如何将大整数转换为字节数组并返回?
  • 我正在使用类似 BigInteger m1 = new BigInteger(data);m1.toByteArray() 的东西,但我按照 Maarten Bodewes 在他的回答中提出的建议进行了更改,因此 biginteger 将始终是积极的

标签: java encryption cryptography paillier


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2019-05-04
    • 2012-10-03
    • 2021-01-18
    • 1970-01-01
    • 2019-10-17
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-11
    相关资源
    最近更新 更多