Ejemplo n.º 1
0
        /// <summary>
        /// Task 1,5. Generating of public and private keys.
        /// </summary>
        /// <param name="keyLength">Key length</param>
        /// <param name="keyChange">For p and q length cnanging</param>
        /// <returns>KeysHolder</returns>
        private static KeysHolder GenerateKeys(int keyLength, int keyChange)
        {
            var generator = new PrimeNumbersGenerator();

            // generating of prime numbers
            var pNumeric = GeneratePrimeNumber(keyLength - keyChange, generator);
            var qNumeric = GeneratePrimeNumber(keyLength + keyChange, generator);

            Console.WriteLine(String.Format("Prime numbers p = {0} and q = {1} are generated.", pNumeric, qNumeric));

            //// generating of composite numbers (on purpose)
            //var pNumeric = GenerateNotPrimeNumber(keyLength, generator);
            //var qNumeric = GenerateNotPrimeNumber(keyLength, generator);
            //Console.WriteLine(String.Format("Составные числа p = {0} и q = {1} сгенерированы.", pNumeric, qNumeric));


            // Calculating public exp, private exp and cypher module
            var keysToReturn = CalculateKeysValues(keyLength, pNumeric, qNumeric, generator);

            FileWorker.CreateNEWFile(keysToReturn.publicKey, "public.txt");
            FileWorker.CreateNEWFile(keysToReturn.privateKey, "private.txt");
            FileWorker.CreateNEWFile(keysToReturn.cypherModule, "cyphermodule.txt");

            Console.WriteLine("The keys are generated and placed in public.txt, private.txt, cyphermodule.txt");

            return(keysToReturn);
        }