/// <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); }