我怎样才能像在这个 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)
如果 c1
和 p
互质,modPow
方法将只接受负指数 -x
。 (名称 p
表明 p
是质数,如果 c1
和 p
不是互质数,c1
将被 p
整除,因此取幂没有意义,所以我怀疑这不会成为问题。)
关于java - 带负数的 BigInteger 求幂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623862/