public static void DecryptMode(bool _retry = false)
        {
            if (_retry)
            {
                DisplayHeader("Invalid Input! Try again!");
            }
            else
            {
                DisplayHeader();
            }
            try
            {
                Key        cipher = new Key();
                Ciphertext ctext  = new Ciphertext();

                byte[] ciphertext = null;
                byte[] key        = null;
                byte[] iv         = null;

                string input;
                Console.Write("How would you like to input ciphertext? (FILE / TEXT): ");
                input = Console.ReadLine().ToUpper();

                if (input == "TEXT")
                {
                    Console.Write("Ciphertext: ");
                    ciphertext = Convert.FromBase64String(Console.ReadLine());
                }
                else if (input == "FILE")
                {
                    Console.WriteLine(@"Please enter the path to your ciphertext. (Ex. C:\EncrpytedText.AESTXT):");
                    string path = Console.ReadLine();
                    System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(Ciphertext));
                    System.IO.StreamReader file = new System.IO.StreamReader(path);
                    ctext      = (Ciphertext)reader.Deserialize(file);
                    ciphertext = Convert.FromBase64String(ctext.CIPHERTEXTSTRING);
                }
                else
                {
                    DecryptMode(true);
                }


                Console.Write("How would you like to input a key? (FILE / TEXT): ");
                input = Console.ReadLine().ToUpper();

                if (input == "TEXT")
                {
                    Console.Write("Key: ");
                    key = Convert.FromBase64String(Console.ReadLine());
                    Console.Write("IV: ");
                    iv = Convert.FromBase64String(Console.ReadLine());
                }
                else if (input == "FILE")
                {
                    Console.Write(@"Please enter the path to your key. (Ex. C:\MainKey.AES): ");
                    string path = Console.ReadLine();
                    System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(Key));
                    System.IO.StreamReader file = new System.IO.StreamReader(path);
                    cipher = (Key)reader.Deserialize(file);
                    key    = Convert.FromBase64String(cipher.KEY);
                    iv     = Convert.FromBase64String(cipher.IV);
                }
                else
                {
                    DecryptMode(true);
                }

                using (AesManaged myAes = new AesManaged())
                {
                    // TODO: Allow the text to be exported to a file.
                    // Decrypt the bytes to a string.
                    string roundtrip = DecryptStringFromBytes_Aes(ciphertext, key, iv);

                    DisplayHeader();
                    Console.Write("How would you like to output your text? (FILE / TEXT): ");
                    input = Console.ReadLine().ToUpper();

                    if (input == "TEXT")
                    {
                        Console.WriteLine("{0}", roundtrip);
                    }
                    else if (input == "FILE")
                    {
                        Console.WriteLine(@"Please enter the path to save your text. (Ex. C:\Document.txt):");
                        string path = Console.ReadLine();
                        System.IO.File.WriteAllText(path, roundtrip);
                    }
                    else
                    {
                        DecryptMode(true);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
            Console.Write("Press any key to continue...");
            Console.ReadKey();
            OperationMode();
        }
        public static void EncryptMode(bool _retry = false)
        {
            if (_retry)
            {
                DisplayHeader("Invalid Input!");
            }
            else
            {
                DisplayHeader();
            }

            try
            {
                string input;
                string original = null;
                // TODO: Allow text to be inputed from a file
                Key cipher = new Key();
                Console.Write("How would you like to input the text to Encrypt? (FILE / CONSOLE): ");
                input = Console.ReadLine().ToUpper();
                if (input == "FILE")
                {
                    Console.Write(@"Please enter the path to your text. (Ex. C:\TextDocument.txt): ");
                    original = System.IO.File.ReadAllText(Console.ReadLine());
                }
                else if (input == "CONSOLE")
                {
                    Console.Write("Text to Encrypt: ");
                    original = Console.ReadLine();
                }
                else
                {
                    EncryptMode(true);
                }

                byte[] key = null;
                byte[] iv  = null;

                Console.Write("How would you like to input a key? (FILE / TEXT): ");
                input = Console.ReadLine().ToUpper();

                if (input == "TEXT")
                {
                    Console.Write("Key: ");
                    key = Convert.FromBase64String(Console.ReadLine());
                    Console.Write("IV: ");
                    iv = Convert.FromBase64String(Console.ReadLine());
                }
                else if (input == "FILE")
                {
                    Console.Write(@"Please enter the path to your key. (Ex. C:\MainKey.AES): ");
                    string path = Console.ReadLine();
                    System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(Key));
                    System.IO.StreamReader file = new System.IO.StreamReader(path);
                    cipher = (Key)reader.Deserialize(file);
                    key    = Convert.FromBase64String(cipher.KEY);
                    iv     = Convert.FromBase64String(cipher.IV);
                }
                else
                {
                    EncryptMode(true);
                }

                // Create a new instance of the AesManaged
                // class.  This can generate a new key and
                // initialization vector (IV).
                using (AesManaged myAes = new AesManaged())
                {
                    byte[] encrypted;
                    string example;

                    // Encrypt the string to an array of bytes.
                    encrypted = EncryptStringToBytes_Aes(original, key, iv);
                    example   = Convert.ToBase64String(encrypted);

                    //Display the original data and the decrypted data.
                    DisplayHeader();
                    Console.Write("Where would you like to output to? (CONSOLE/FILE): ");
                    string line = Console.ReadLine().ToUpper();
                    if (line == "CONSOLE")
                    {
                        DisplayHeader();
                        Console.WriteLine("Cyphertext: {0}", example);
                    }
                    else if (line == "FILE")
                    {
                        DisplayHeader();
                        Ciphertext cyphertext = new Ciphertext();
                        cyphertext.CIPHERTEXTSTRING = example;
                        Console.Write(@"Please enter a path (Ex. C:\EncrpytedText.AESTXT): ");
                        string path = Console.ReadLine();
                        System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(typeof(Ciphertext));
                        System.IO.StreamWriter file = new System.IO.StreamWriter(path);
                        writer.Serialize(file, cyphertext);
                        file.Close();
                        Console.WriteLine("File successfully written to file at (" + path + ")");
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
            Console.Write("Press any key to continue...");
            Console.ReadKey();
            OperationMode();
        }