public void GenerateKey(int max, int min) { PrimeNumber primeNumber = new PrimeNumber(); _privateKeyA = primeNumber.returnPrime(min, max); _privateKeyB = primeNumber.returnPrime(min, max); _publicKey = RSAEncryptor.GeneratePublicKey(_privateKeyA, _privateKeyB); int x = RSAEncryptor.LeastCommonMultiple(_privateKeyA, _privateKeyB); _coPrimeNumber = RSAEncryptor.GenerateCoPrime(_privateKeyA, _privateKeyB, x); _computedPrivateKey = RSAEncryptor.GeneratePrivateKey(_coPrimeNumber, x); }
public void Break(int publicKeyClient, int clientPrime, int publicKeyServer, int serverPrime) { int lcm; for (int i = 2; i < publicKeyClient; i++) { if (_primes[i] == 0) { for (int k = 2; k < publicKeyClient; k++) { if (_primes[k] == 0) { if (i * k > publicKeyClient) { k = publicKeyClient; } if (i * k == publicKeyClient) { lcm = RSAEncryptor.LeastCommonMultiple(i, k); _privateKeyClient = RSAEncryptor.GeneratePrivateKey(clientPrime, lcm); i = publicKeyClient; } } } } } for (int i = 2; i < publicKeyServer; i++) { if (_primes[i] == 0) { for (int k = 2; k < publicKeyServer; k++) { if (_primes[k] == 0) { if (i * k > publicKeyServer) { k = publicKeyServer; } if (i * k == publicKeyServer) { lcm = RSAEncryptor.LeastCommonMultiple(i, k); _privateKeyServer = RSAEncryptor.GeneratePrivateKey(serverPrime, lcm); i = publicKeyServer; } } } } } }