java - 带负数的 BigInteger 求幂

标签 java python algorithm security encryption

我怎样才能像在这个 python(使用 sage)代码中那样做:

def elGamalDecrypt(c1, c2, p, x):
    return Mod(c2*c1^(-x),p)

使用标准 Java 7 库?所有数字都是 BigInteger

试了很多都没有用。在 Python 中,它非常简单和快速。

最佳答案

Java 7 中的 BigInteger 类有一个 modPow方法,处理模幂运算。所以,像下面这样的东西应该可以工作(虽然我还没有测试过):

c2.multiply(c1.modPow(x.negate(), p)).mod(p)

如果 c1p 互质,modPow 方法将只接受负指数 -x。 (名称 p 表明 p 是质数,如果 c1p 不是互质数,c1 将被 p 整除,因此取幂没有意义,所以我怀疑这不会成为问题。)

关于java - 带负数的 BigInteger 求幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623862/

相关文章:

Python - 虽然为真 : Try Except Else - Program Flow Question

algorithm - 为 Tic Tac Toe 的极小极大算法找出可能的走法

java , Selenium ;编译代码时抛出异常

java - 无法使用 Android SDK 3 连接到 Facebook

python - 我怎样才能使用 zip(), python

python - Selenium 等待用户单击 python 中的警报对话框

algorithm - 节水小便器的最优算法设计是什么?

javascript - 创建具有最小值、最大值和离散值的对数刻度 "steps"

java - Java 中的 KeyBinds 在按住 Shift 时会中断

java - 为什么我的 ListView 中的项目不可点击?