Какова формула для вычисления ключа дешифрования для RSA в C#?
То же, что и на любом языке:)
(d * e) mod LCM(p-1, q-1) == 1; solve for d.
В C# -y-синтаксисе это
d = ModInverse(e, LCM(p - 1, q - 1))
Чуть менее интенсивное вычисление (без необходимости вычисления LCM) составляет
eulierTotient = (p - 1) * (q - 1);
d = ModInverse(e, eulierTotient);
(Это приведет к другому d чем с LCM, но тот, который все еще функционирует)
ModInverse ( модульный мультипликативный обратный ) не слишком сложен, с Расширенным евклидовым алгоритмом . Если вы не хотите независимо транскрибировать алгоритм в C#, вы всегда можете найти реализацию в существующем ответе, например Как выполнить модинверс в C#.