我需要计算两个BigIntegers的产品,将BigIntegers模块化为一个素数。
我正在计算 - y ^ r * r ^ s(mod p)。
我正在使用的代码有效,但我不禁觉得它正在执行不必要的计算,当涉及大型BigIntegers时,这些计算非常昂贵。
BigInteger v1A = y.modPow(r, p);
BigInteger v1B = r.modPow(s, p);
BigInteger v1 = v1A.multiply(v1B).mod(p);
理想情况下,我想要一次性计算v1。这可能吗?
答案 0 :(得分:1)
假设你使用的方法是有效的,我没有看到更快的方法来做到这一点,但我不是专家。当然,您可以将代码合并到:
BigInteger v1 = (y.modPow(r,p)).multiply(r.modPow(s,p)).mod(p)
但这与您的代码完全相同。