Example #1
0
        private void buttonDecode_Click(object sender, EventArgs e)
        {
            string inputPath  = textBoxInput.Text;
            string outputPath = textBoxOutput.Text;

            if (textBox1.Text.Trim() == "")
            {
                MessageBox.Show(new Form()
                {
                    TopMost = true
                },
                                "Введите парольную фразу для шифрования!",
                                "Ошибка!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            else
            if (!File.Exists(inputPath))
            {
                MessageBox.Show(new Form()
                {
                    TopMost = true
                },
                                "Данного входного файла не существует!",
                                "Ошибка!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            else
            if (outputPath == "")
            {
                MessageBox.Show(new Form()
                {
                    TopMost = true
                },
                                "Отсутствует файл для вывода!",
                                "Ошибка",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            else
            {
                int longtoEncode;

                if (radioButton1.Checked)
                {
                    longtoEncode = 128;
                }

                else
                if (radioButton2.Checked)
                {
                    longtoEncode = 192;
                }
                else
                {
                    longtoEncode = 256;
                }

                byte[] userKeyBytes = Encoding.Unicode.GetBytes(textBox1.Text);
                PasswordDeriveBytes passwordDeriveBytes = new PasswordDeriveBytes(userKeyBytes, null);
                byte[] passInByte = passwordDeriveBytes.GetBytes(longtoEncode);

                #region decodeFile

                try {
                    RC6 rc6 = new RC6(longtoEncode, passInByte);

                    byte[] inputBytes  = File.ReadAllBytes(inputPath);
                    byte[] decodedText = rc6.DecodeRc6(inputBytes);

                    File.WriteAllBytes(outputPath, decodedText);
                }
                catch (Exception)
                {
                    MessageBox.Show(new Form()
                    {
                        TopMost = true
                    },
                                    "Был выбран некорректный файл для расшифровки!",
                                    "Ошибка",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }


                #endregion
            }
        }
        private void buttonDecodeFromFile_Click(object sender, EventArgs e)
        {
            if (textBox2.Text.Trim() == "")
            {
                MessageBox.Show(new Form()
                {
                    TopMost = true
                },
                                "Введите парольную фразу для расшифрования!",
                                "Ошибка!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            else
            if (!radioButton1.Checked && !radioButton2.Checked && !radioButton3.Checked)
            {
                MessageBox.Show(new Form()
                {
                    TopMost = true
                },
                                "Выберите длину ключа!",
                                "Ошибка!",
                                MessageBoxButtons.OK,
                                MessageBoxIcon.Error);
            }
            else
            {
                int longtoEncode;


                if (radioButton1.Checked)
                {
                    longtoEncode = 128;
                }

                else
                if (radioButton2.Checked)
                {
                    longtoEncode = 192;
                }
                else
                {
                    longtoEncode = 256;
                }

                #region FileToCode

                OpenFileDialog o = new OpenFileDialog();
                o.CheckFileExists = true;
                o.CheckPathExists = true;
                o.Multiselect     = false;
                o.SupportMultiDottedExtensions = true;
                o.Title = "Выберите файл с текстом для расшифрования";
                if (o.ShowDialog(this) != DialogResult.OK)
                {
                    return;
                }

                //String userKeyword = textBox2.Text.Length < maxLength ? textBox2.Text + new string(' ', maxLength - textBox2.Text.Length) : textBox2.Text;

                byte[] userKeyBytes = Encoding.Unicode.GetBytes(textBox2.Text);
                PasswordDeriveBytes passwordDeriveBytes = new PasswordDeriveBytes(userKeyBytes, null);
                byte[] passInByte = passwordDeriveBytes.GetBytes(longtoEncode);

                try
                {
                    RC6 rc6 = new RC6(longtoEncode, passInByte);


                    byte[] fromFile = File.ReadAllBytes(o.FileName);

                    textBox1.Text = Encoding.UTF8.GetString(rc6.DecodeRc6(fromFile));
                }
                catch (Exception)
                {
                    MessageBox.Show(new Form()
                    {
                        TopMost = true
                    },
                                    "Был выбран некорректный файл для расшифровки!",
                                    "Ошибка",
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Error);
                }
                #endregion
            }
        }