Пример #1
0
        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);
        }
Пример #2
0
        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;
                            }
                        }
                    }
                }
            }
        }