Ключ расшифровки RSA - PullRequest
       15

Ключ расшифровки RSA

0 голосов
/ 02 февраля 2020

Какова формула для вычисления ключа дешифрования для RSA в C#?

Я использовал

BigInteger d = BigInteger.ModPow(e, (euiler - 1), euiler)

, но это не так, и единственный способ получить правильный ключ дешифрования - это если я жестко закодирую значение для де, например,

   BigInteger d; 

   BigInteger de = 7; 
   d = ((de * euiler) + 1) / e;

1 Ответ

0 голосов
/ 11 февраля 2020

Какова формула для вычисления ключа дешифрования для 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#.

...