Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using Org.BouncyCastle.Math;
- public BigInteger CalculateRSA(BigInteger p, BigInteger q, BigInteger e)
- {
- // n = p*q - for illustration
- BigInteger n = p.Multiply(q);
- // phi / r = (p-1)*(q-1)
- BigInteger phi = p.Subtract(BigInteger.One).Multiply(q.Subtract(BigInteger.One));
- // d = e^−1 (mod λ(n))
- BigInteger d = e.ModInverse(phi);
- // Return d
- return d;
- }
- public void Main(string[] args){
- // Example usage - primes would have to be factored from n of public key
- string pText = "CC9EEF4A31452B93A2C3658566841BA7DFCD10B847D6749A91A32271DAAC6EFB5A45150AE684D632EDF8EAC03AA3F65EAA2648738E1B86137F66BE238B96D4AB",
- qText = "C364D7C501E30FC2076E5CFA57DFD4D8970AF695D754DD41A5CA13E760E2C5A1A447A1B7B8985225C25D0966C8CD8DB198860C37F3CE6CB190FB2B1FCDE11E61",
- eText = "65537";
- // Load p and q as hex, e as decimal
- BigInteger p = new BigInteger(pText, 16),
- q = new BigInteger(qText, 16),
- e = new BigInteger(eText, 10);
- // Calculate d - the private key
- BigInteger d = CalculateRSA(p, q, e);
- // Output as hex
- Console.WriteLine(d.ToString(16));
- }
Add Comment
Please, Sign In to add comment