private async void embedButton_Click(object sender, RoutedEventArgs e)
        {
            text = richTextBox.Text;
            // text = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd).Text;
            if (original == null)
            {
                await this.ShowMessageAsync("Error", "Image is not selected. Please choose an image first.", MessageDialogStyle.Affirmative);

                //  MessageBox.Show("Image is not selected. Please choose an image first.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (encrypt.IsChecked == true)
            {
                if (keyBox.Text != string.Empty)
                {
                    text = AES.StringCipher.Encrypt(text, keyBox.Text);
                    //byte[] plain = Convert.FromBase64String(text);
                    //text = Encoding.UTF8.GetString(plain);
                }
                else
                {
                    await this.ShowMessageAsync("Error", "Provide cryptography key.", MessageDialogStyle.Affirmative);

                    //   MessageBox.Show("Provide cryptography key.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }
            if (radioLSB.IsChecked == true)
            {
                stego = LSB.EmbedText(original, text);
            }
            else if (radioFibo.IsChecked == true)
            {
                stego = Fibonacci.EmbedText(original, text);
            }
            else if (radioEdge.IsChecked == true)
            {
                stego = Canny.EmbedText(original, text);
            }
            //   image.Source = bmp.Bitmap2BitmapImage();


            //  MessageBox.Show(text);
            if (stego == null)
            {
                await this.ShowMessageAsync("Error", "Image is not large enough. Please select another image.", MessageDialogStyle.Affirmative);

                //  MessageBox.Show("Image is not large enough. Please select another image.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                // MessageBox.Show("Image is not large enough. Please select another image.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }

            else
            {
                await this.ShowMessageAsync("Success", "Image successfully Generated. Now you can save.", MessageDialogStyle.Affirmative);

//                MessageBox.Show("Image successfully Generated. Now you can save.", "Success");
                //     image2.Source = stegoBmp.Bitmap2BitmapImage();
            }
        }
        private async void extractButton_Click(object sender, RoutedEventArgs e)
        {
            if (stego == null)
            {
                await this.ShowMessageAsync("Error", "Image is not selected. Please choose an image first.", MessageDialogStyle.Affirmative);

                //MessageBox.Show("Image is not selected. Please choose an image first.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            if (radioLSB.IsChecked == true)
            {
                text = LSB.ExtractText(stego);
            }
            else if (radioFibo.IsChecked == true)
            {
                text = Fibonacci.ExtractText(stego);
            }
            else if (radioEdge.IsChecked == true)
            {
                text = Canny.ExtractText(stego);
            }
            if (encrypt.IsChecked == true)
            {
                if (keyBox.Text != string.Empty)
                {
                    try
                    {
                        //richTextBox.Text = AES.StringCipher.Decrypt(text, keyBox.Text);
                        //var tmp = Encoding.UTF8.GetBytes(text.Substring(0, text.Length - 1));
                        //var base64 = Convert.ToBase64String(tmp);
                        richTextBox.Text = AES.StringCipher.Decrypt(text.Substring(0, text.Length - 1), keyBox.Text);
                    }
                    catch (FormatException ferr)
                    {
                        await this.ShowMessageAsync("Error", "Error Occured. " + ferr.Message, MessageDialogStyle.Affirmative);

                        // MessageBox.Show("Error Occured. " + ferr.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                    catch (Exception err)
                    {
                        await this.ShowMessageAsync("Error", "Error Occured. Please check key.", MessageDialogStyle.Affirmative);

                        //MessageBox.Show("Error Occured. Please check key." + err.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }
                }
                else
                {
                    await this.ShowMessageAsync("Error", "Provide cryptography key.", MessageDialogStyle.Affirmative);

                    //  MessageBox.Show("Provide cryptography key.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                    return;
                }
            }
            else
            {
                richTextBox.Text = text.Substring(0, text.Length - 1);
            }
            //    richTextBox.Document.Blocks.Clear();
            //richTextBox.Document.Blocks.Add(new Paragraph(new Run(text)));
            //  MessageBox.Show("Successfully Generated. Now you can save.");
        }