1

我需要计算两个 BigIntegers 的乘积,这些 BigIntegers 被提升为 BigIntegers 模素数。

我正在计算 - y^r * r^s (mod p)。

我正在使用的代码有效,但我不禁感到它正在执行不必要的计算,当涉及大型 BigInteger 时,这些计算非常昂贵。

BigInteger v1A = y.modPow(r, p);
BigInteger v1B = r.modPow(s, p);
BigInteger v1 = v1A.multiply(v1B).mod(p);

理想情况下,我想要一种一次性计算 v1 的方法。这可能吗?

4

1 回答 1

1

假设您使用的方法是有效的,我没有看到更快的方法来做到这一点,但我不是专家。当然,您可以将代码合并为:

BigInteger v1 = (y.modPow(r,p)).multiply(r.modPow(s,p)).mod(p)

但这与您的代码完全相同。

于 2013-12-02T07:10:41.333 回答