//Decrypt button
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            //Decrypt button to decrypt the hex message with the key and IV from the text boxes
            Stopwatch sw = new Stopwatch();

            sw.Start();

            if (cbi.SelectedIndex == 0)
            {   // Decrypt DES encryption
                // Create new DES instantiation
                var des = new DesEncryption();

                // key and iv converted to byte arrays to be used in the Decrypt method below
                byte[] key = Convert.FromBase64String(key_box.Text);
                byte[] iv  = Convert.FromBase64String(IV_box.Text);

                // Decryption method takes in the encrypted hexidecimal-text from the textbox and the key/iv byte arrays
                var decryptedText = des.Decrypt(Convert.FromBase64String(hex_decrypt.Text), key, iv);

                // send the decrypted text to ASCI text box in View
                Chiphertext.Text = Encoding.UTF8.GetString(decryptedText);
            }
            else if (cbi.SelectedIndex == 1)
            {   // Decrypt TripleDES encryption
                // Create new TripleDES instantiation
                var tdes = new TDESEncryption();

                // key and iv converted to byte arrays to be used in the Decrypt method below
                byte[] key = Convert.FromBase64String(key_box.Text);
                byte[] iv  = Convert.FromBase64String(IV_box.Text);

                // Decryption method takes in the encrypted hexidecimal-text from the textbox and the key/iv byte arrays
                var decryptedText = tdes.Decrypt(Convert.FromBase64String(hex_decrypt.Text), key, iv);

                // send the decrypted text to ASCI text box in View
                Chiphertext.Text = Encoding.UTF8.GetString(decryptedText);
            }
            else if (cbi.SelectedIndex == 2)
            {   // Decrypt AES encryption
                // Create new AES instantiation
                var aes = new AESEncryption();

                // key and iv converted to byte arrays to be used in the Decrypt method below
                byte[] key = Convert.FromBase64String(key_box.Text);
                byte[] iv  = Convert.FromBase64String(IV_box.Text);

                // Decryption method takes in the encrypted hexidecimal-text from the textbox and the key/iv byte arrays
                var decryptedText = aes.Decrypt(Convert.FromBase64String(hex_decrypt.Text), key, iv);

                // send the decrypted text to ASCI text box in View
                Chiphertext.Text = Encoding.UTF8.GetString(decryptedText);
            }
            //Stops the Stopwatch and saves the times used to encrypt/decrypt the message.
            sw.Stop();
            TimeSpan time2 = sw.Elapsed;

            //Display the saved time in miliseconds
            DecryptTextBlock.Text = time2.TotalMilliseconds.ToString() + "ms";
        }
        //Generate Key and IV button
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            // generate a key and IV and show them in the text boxes: "key_box" and "IV_box"

            if (cbi.SelectedIndex == 0)
            {   // DES key/IV generator
                // Create new DES instantiation
                var des = new DesEncryption();

                // Generate DES Key and IV
                var key = des.GenerateRandomNumber(8);
                var iv  = des.GenerateRandomNumber(8);

                // Send the generated keys to the View text boxes as strings
                key_box.Text = Convert.ToBase64String(key);
                IV_box.Text  = Convert.ToBase64String(iv);
            }
            else if (cbi.SelectedIndex == 1)
            {   // TripleDES key/IV Generator
                // Create new TripleDES instantiation
                var des = new TDESEncryption();

                // Generate TripleDES Key and IV
                var key = des.GenerateRandomNumber(16);
                var iv  = des.GenerateRandomNumber(8);

                // Send the generated keys to the View text boxes as strings
                key_box.Text = Convert.ToBase64String(key);
                IV_box.Text  = Convert.ToBase64String(iv);
            }
            else if (cbi.SelectedIndex == 2)
            {   // AES key/IV generator
                // Create new AES instantiation
                var des = new AESEncryption();

                // Generate AES Key and IV
                var key = des.GenerateRandomNumber(32);
                var iv  = des.GenerateRandomNumber(16);

                // Send the generated keys to the View text boxes as strings
                key_box.Text = Convert.ToBase64String(key);
                IV_box.Text  = Convert.ToBase64String(iv);
            }
        }
        // Encrypt button
        private void Button_Click_2(object sender, RoutedEventArgs e)
        {
            //Encrypt button to encrypt the plaintext message with the keys generated

            Stopwatch sw = new Stopwatch();

            sw.Start();

            if (cbi.SelectedIndex == 0)
            {
                // Decryption DES

                // Create new DES instantiation
                var des = new DesEncryption();

                // Get key/IV strings from the View text boxes and convert them to byte arrays
                byte[] key = Convert.FromBase64String(key_box.Text);
                byte[] iv  = Convert.FromBase64String(IV_box.Text);

                // Copy the text string from the plaintext box in a string variable for the encryption method
                string plaintext = Plaintext.Text;

                // Encrypt the plaintext method with the plaintext, key and iv.
                var encryptedText = des.Encrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);

                // send the encrypted text message to the encrypted hex box and decrypted hex box
                hex_encrypt.Text = Convert.ToBase64String(encryptedText);
                hex_decrypt.Text = Convert.ToBase64String(encryptedText);
            }
            else if (cbi.SelectedIndex == 1)
            {
                // Decryption TripleDES

                // Create new TripleDES instantiation
                var des = new TDESEncryption();

                // Get key/IV strings from the View text boxes and convert them to byte arrays
                byte[] key = Convert.FromBase64String(key_box.Text);
                byte[] iv  = Convert.FromBase64String(IV_box.Text);

                // Copy the text string from the plaintext box in a string variable for the encryption method
                string plaintext = Plaintext.Text;

                // Encrypt the plaintext method with the plaintext, key and iv.
                var encryptedText = des.Encrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);

                // send the encrypted text message to the encrypted hex box and decrypted hex box
                hex_encrypt.Text = Convert.ToBase64String(encryptedText);
                hex_decrypt.Text = Convert.ToBase64String(encryptedText);
            }
            else if (cbi.SelectedIndex == 2)
            {
                // Decryption AES

                // Create new AES instantiation
                var des = new AESEncryption();

                // Get key/IV strings from the View text boxes and convert them to byte arrays
                byte[] key = Convert.FromBase64String(key_box.Text);
                byte[] iv  = Convert.FromBase64String(IV_box.Text);

                // Copy the text string from the plaintext box in a string variable for the encryption method
                string plaintext = Plaintext.Text;

                // Encrypt the plaintext method with the plaintext, key and iv.
                var encryptedText = des.Encrypt(Encoding.UTF8.GetBytes(plaintext), key, iv);

                // send the encrypted text message to the encrypted hex box and decrypted hex box
                hex_encrypt.Text = Convert.ToBase64String(encryptedText);
                hex_decrypt.Text = Convert.ToBase64String(encryptedText);
            }
            sw.Stop();
            TimeSpan time1 = sw.Elapsed;

            EncryptTextBlock.Text = time1.TotalMilliseconds.ToString() + "ms";
        }