public int Decrypt(int p, int q, int C, int e) { // d = e ^ -1 mod TotientN // M = C ^ d mod n int n = p * q; ExtendedEuclid obj = new ExtendedEuclid(); int TotientN = (p - 1) * (q - 1); int d = obj.GetMultiplicativeInverse(e, TotientN); return(power(C, d, n)); }
public int Decrypt(int p, int q, int C, int e) { ExtendedEuclid EX = new ExtendedEuclid(); int n = p * q; int Qn = (p - 1) * (q - 1); int extendedNumber = EX.GetMultiplicativeInverse(e, Qn); int d = extendedNumber % Qn; int result = C; for (int i = 1; i < d; i++) { result = (int)((result % n) * (C % n)) % n; } return(result); // throw new NotImplementedException(); }
public int Decrypt(int p, int q, int C, int e) { int plain = 0; int n = p * q; int Qn = (p - 1) * (q - 1); ExtendedEuclid ex = new ExtendedEuclid(); int inverse = ex.GetMultiplicativeInverse(e, Qn); int d = inverse; if (d < 0) { d += Qn; } // plain = (int)(Pow(C, d) % n); plain = (int)Mod(C, d, n); return(plain); }