Модульное возведение в степень в Java

Мне нужен способ вычисления:

(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

, так как мои математические навыки невысоки.

Чтобы выразить это в контексте, это для java-реализации "сокращенного" DSA - проверки часть требует решения этой проблемы.

5
задан wnoise 1 November 2010 в 07:01
поделиться