Добрый день есть g^m * r^n mod n^2, основная проблема возведения в степень так как нужно будет использовать числа от 512, 1024 бит.
попробовал сделать костыль BigInteger.ModPow(r, n, bigmod()), где bigmod()- это число фиксированное число 1000000.... Но это не всегда срабатывает, потому что если r^n>bigmod() получаем ошибку вычисления, что бы ее решить нужно подсчитать примерную длину r^n , пока не знаю как это сделать не засоряя память.
Если использовать алгоритм быстрое возведение в степень -> засоряет память и выполняется очень долго.
Для проверки корректности использую эти значения(см картинку, в заголовке cipher text, пример вычисления c)
Кто сталкивался с подобной проблемой и как решил, каким алгоритмов , пример кода.