java - Java 中的模幂运算

标签 java math modulus dsa exponentiation

我需要一种方法来计算:

(g^u * y^v) mod p

在 Java 中。

我发现了这个计算 (g^u) mod p 的算法:

int modulo(int a,int b,int c) {
    long x=1
    long y=a;
    while(b > 0){
        if(b%2 == 1){
            x=(x*y)%c;
        }
        y = (y*y)%c; // squaring the base
        b /= 2;
    }
    return (int) x%c;
}

效果很好,但我似乎找不到办法做到这一点

(g^u * y^v) mod p

因为我的数学能力很差。

在上下文中,它用于“简化”DSA 的 java 实现 - 验证部分需要解决这个问题。

最佳答案

假设这两个因素不会溢出,我相信你可以这样简化一个表达式:

(x * y) mod p = ( (x mod p)*(y mod p) ) mod p。我相信您可以从那里弄明白。

关于java - Java 中的模幂运算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066952/

相关文章:

java - Vaadin 网格不会在事件中刷新

java - 使用自定义消息报告 JUnit 断言失败

java - Java中的Mod产生负数

c++ - 根据用户输入计算尽可能少的硬币

python - 使用 % 和//求除数

c++ - 求大 n 和 k 模 m 的二项式系数

java - putText 在 opencv3.0 中不起作用

java - JScrollPane 的奇怪问题 - 尽管使用了 : setVerticalScrollBarPolicy(JScrollPane. VERTICAL_SCROLLBAR_​​ALWAYS,但滚动条未显示;

javascript - 用 Angular 计算坐标

math - 以数学方式将有符号整数转换为无符号整数