Beispiel #1
0
        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);
        }
Beispiel #2
0
        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}");
        }