public void CorrectDecode(string value, string number1, string number2) { var p = new MyBigInteger(number1); var q = new MyBigInteger(number2); var module = p * q; var phi = (p - MyBigInteger.One) * (q - MyBigInteger.One); var exponent = AlgorithmRSA.CalculatePublicExponent(phi); var secretExponent = AlgorithmRSA.CalculateSecretExponent(exponent, phi); var chars = value.ToCharArray().Select(x => (int)(byte)x).ToArray(); var encoded = AlgorithmRSA.Encode(chars, exponent, module); var result = AlgorithmRSA.Decode(encoded, secretExponent, module); CollectionAssert.AreEqual(result, chars); }
private static void Decode() { Console.WriteLine("Enter your module: "); var module = new MyBigInteger(Console.ReadLine()); Console.WriteLine("Enter your secret exponent: "); var secretExponent = new MyBigInteger(Console.ReadLine()); Console.WriteLine("Enter your crypted data per line: "); var crypted = new List <MyBigInteger>(); var line = Console.ReadLine(); while (!string.IsNullOrEmpty(line)) { crypted.Add(new MyBigInteger(line)); line = Console.ReadLine(); } var chars = AlgorithmRSA.Decode(crypted, secretExponent, module); var result = Encoding.ASCII.GetString(chars.Select(x => (byte)x).ToArray()); Console.WriteLine($"Your message was {result}"); }