我怎样才能在这个python中使用(使用sage)代码:
def elGamalDecrypt(c1, c2, p, x):
return Mod(c2*c1^(-x),p)
使用标准Java 7库?所有数字均为BigInteger
。
我尝试了很多但没有用。在Python中,它非常简单且快速。
答案 0 :(得分:3)
Java 7中的BigInteger类有一个modPow
方法,用于处理模幂运算。因此,类似下面的内容应该可行(尽管我还没有测试过):
c2.multiply(c1.modPow(x.negate(), p)).mod(p)
如果modPow
和-x
是互质的,c1
方法只接受否定指数p
。 (名称p
表示p
是素数,如果c1
和p
不是互质,c1
可以被p
整除因此取幂是没有意义的,所以我怀疑这不会成为问题。)
答案 1 :(得分:0)
这应该与c2 * c1^-x = c2 / (c1 ^ x)
:
BigInteger elGamalDecrypt(BigInteger c1, BigInteger c2, BigInteger p, int x) {
return c2.divide(c1.pow(x)).mod(p);
}