Мне нужен способ вычисления:
(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 - проверки часть требует решения этой проблемы.