예제 #1
0
        /// <summary>
        /// Шифрование/дешифрование
        /// </summary>
        private void EncryptDecryptButton_Click(object sender, RoutedEventArgs e)
        {
            string AlgName = null;

            CopyEncText.Visibility = Visibility.Visible;
            CopyKeyText.Visibility = Visibility.Visible;


            // ################################# Шифрование ################################
            if (EncryptionModeRadioButton.IsChecked == true)
            {
                if (CBCRadioButton.IsChecked == true)
                {
                    AlgName = AlgNameCombobox.SelectionBoxItem.ToString() + "_CBC_PKCS7";
                    CopyIVText.Visibility = Visibility.Visible;
                }
                else
                {
                    AlgName = AlgNameCombobox.SelectionBoxItem.ToString() + "_ECB_PKCS7";
                }

                try
                {
                    Cryptobox EncObject = new Cryptobox();
                    if (AlgName.Contains("RC4"))
                    {
                        AlgName = "RC4";
                    }
                    OutputTextTextbox.Text = EncObject.EncryptMode(InputTextTextbox.Text, KeyInputTextTextbox.Text, AlgName, IVInputTextTextbox.Text, "256");//KeySizeCombobox.SelectionBoxItem.ToString());
                    AlgName = null;
                }
                catch (Exception ex)
                {
                    string ErrorMessage = ex.Message;

                    var DialogMessage = new MessageDialog("Ой");

                    if (ErrorMessage.Contains("Value does not fall"))
                    {
                        DialogMessage = new MessageDialog("Указанная длина ключа не подходит для алгоритма", "Ой");
                    }
                    DialogMessage.ShowAsync();
                }
            }

            // ################################# Дешифрование ################################
            else
            {
                if (CBCRadioButton.IsChecked == true)
                {
                    AlgName = AlgNameCombobox.SelectionBoxItem.ToString() + "_CBC_PKCS7";
                    CopyIVText.Visibility = Visibility.Visible;
                }
                else
                {
                    AlgName = AlgNameCombobox.SelectionBoxItem.ToString() + "_ECB_PKCS7";
                }

                try
                {
                    Cryptobox DecObject = new Cryptobox();
                    if (AlgName.Contains("RC4"))
                    {
                        AlgName = "RC4";
                    }

                    OutputTextTextbox.Text = DecObject.DecrypMode(InputTextTextbox.Text, KeyInputTextTextbox.Text, AlgName, IVInputTextTextbox.Text, "256");//;KeySizeCombobox.SelectionBoxItem.ToString());
                    AlgName = null;
                    GC.Collect();
                }
                catch (Exception exception)
                {
                    string ErrorMessage = exception.Message;
                    // ################################# Обработчики ошибок дешифрования ################################
                    var DialogMessage = new MessageDialog("Ой");

                    if (ErrorMessage.Contains("0x80070017"))
                    {
                        DialogMessage = new MessageDialog("Неправильный ключ", "Ой");
                    }
                    else if (ErrorMessage.Contains("Плохие данные"))
                    {
                        DialogMessage = new MessageDialog("Вы пытаетесь расшифровать не зашифрованный текст", "Ой");
                    }
                    else if (ErrorMessage.Contains("буфер не подходит"))
                    {
                        DialogMessage = new MessageDialog("Введите вектор инициализации IV", "Ой");
                    }
                    else if (ErrorMessage.Contains("Value does not fall"))
                    {
                        DialogMessage = new MessageDialog("Указанная длина ключа не подходит для алгоритма", "Ой");
                    }

                    else
                    {
                        DialogMessage = new MessageDialog(ErrorMessage, "Ой");
                    }
                    DialogMessage.ShowAsync();

                    ////////////////////////////////////////////////////////////////////
                }
            }
        }