Beispiel #1
0
        public MainWindow()
        {
            InitializeComponent();

            // Initialize messageQueue and Assign it to Snack bar's MessageQueue
            var messageQueue = new SnackbarMessageQueue(TimeSpan.FromSeconds(2));

            Snackbar.MessageQueue = messageQueue;

            // Initialize CiphersComboBox
            CiphersComboBox.ItemsSource       = CiphersList.Instance;
            CiphersComboBox.DisplayMemberPath = "DisplayName";

            // Initialize NewCipherDialog
            NewCipherDialog.Context = this;

            // Disable Actions
            EnableActions(false);

            // Clear initial block from RichTextBoxes
            InputRichTextBox.Clear();
            OutputRichTextBox.Clear();

            // Check for updates
            CheckForUpdates();
        }
Beispiel #2
0
 private void DecButton_Click(object sender, EventArgs e)
 {
     if (OutputRichTextBox.Text == "")
     {
         MessageBox.Show("Окно для расшифровки пусто");
     }
     else
     if (KeyTB.TextLength < 5 || KeyTB.TextLength > 256)
     {
         MessageBox.Show("Размер ключа должен находиться в пределах от 5 до 256 символов");
     }
     else
     {
         TimeStart();
         short[] result = new short[OutputRichTextBox.TextLength];
         for (int i = 0; i < OutputRichTextBox.TextLength; i++)
         {
             result[i] = (short)OutputRichTextBox.Text[i];
         }
         short[] key = new short[KeyTB.TextLength];
         for (int i = 0; i < KeyTB.TextLength; i++)
         {
             key[i] = (short)KeyTB.Text[i];
         }
         Algorithm_RC4.AlgorithmRC4 decoder = new Algorithm_RC4.AlgorithmRC4(key);
         short[] decryptedBytes             = decoder.Decode(result, result.Length);
         OutputRichTextBox.Clear();
         for (int i = 0; i < decryptedBytes.Length; i++)
         {
             OutputRichTextBox.Text += (char)decryptedBytes[i];
         }
         TimeStop();
     }
 }
        private void fileDecryptButton_Click(object sender, EventArgs e)
        {
            Algorithm_Encryption.ГОСТ_28147.D32 d32;
            if (OutputRichTextBox.Text == "")
            {
                MessageBox.Show("Введите данные для расшифрования", "Ошибка");
            }
            else
            {
                byte[] btFile = encrByteFile;

                if (byteKey.Length != 32)
                {
                    MessageBox.Show("Введдите 256-битный ключ.");
                }
                else
                {
                    DateTime StartTime;
                    MyTime    = 0;
                    StartTime = DateTime.Now;
                    TimerAlgorithm.Interval = 60000;//в милисекундах
                    TimerAlgorithm.Enabled  = true;

                    d32          = new Algorithm_Encryption.ГОСТ_28147.D32(btFile, byteKey);
                    decrByteFile = d32.GetDecryptFile;
                    OutputRichTextBox.Clear();
                    OutputRichTextBox.Text = Encoding.Default.GetString(decrByteFile);

                    TimerAlgorithm.Enabled = false;
                    DateTime EndTime = DateTime.Now;
                    ToolStripStatusLabel.Text        = "Время работы алгоритма шифрования (в миллисекундах)";
                    SecondsToolStripStatusLabel.Text = (EndTime - StartTime).TotalMilliseconds.ToString();
                }
            }
        }
        private void EncButton_Click(object sender, EventArgs e)
        {
            if (NOpenTB.Text == "" || EOpenTB.Text == "")
            {
                MessageBox.Show("Для зашифровки сообщения введите открытый ключ.", "Ошибка");
                return;
            }
            else if (!CheckKey(NOpenTB.Text) || !CheckKey(EOpenTB.Text))
            {
                MessageBox.Show("Открытый ключ содержит некорректные символы.", "Ошибка");
                return;
            }
            else if (InputRichTextBox.Text == "")
            {
                MessageBox.Show("Окно для ввода текста пусто", "Ошибка!");
                return;
            }
            else
            {
                TimeStart();
                Algorithm_RSA.AlgorithmRSA rsa = new Algorithm_RSA.AlgorithmRSA();

                string input = InputRichTextBox.Text;
                byte[] Enc   = rsa.Encrypt(input, E, n);
                enc = Enc;
                OutputRichTextBox.Clear();
                for (int i = 0; i < enc.Length; i++)
                {
                    OutputRichTextBox.Text += Enc[i];
                }

                TimeStop();
            }
        }
        private void DecButton_Click(object sender, EventArgs e)
        {
            if (NCloseTB.Text == "" || DCloseTB.Text == "")
            {
                MessageBox.Show("Для зашифровки сообщения введите открытый ключ.", "Ошибка");
                return;
            }
            else if (!CheckKey(NCloseTB.Text) || !CheckKey(DCloseTB.Text))
            {
                MessageBox.Show("Открытый ключ содержит некорректные символы.", "Ошибка");
                return;
            }
            else
            if (OutputRichTextBox.Text == "")
            {
                MessageBox.Show("Окно для расшифровки пусто", "Ошибка");
                return;
            }
            else
            {
                TimeStart();
                Algorithm_RSA.AlgorithmRSA rsa = new Algorithm_RSA.AlgorithmRSA();

                OutputRichTextBox.Clear();
                OutputRichTextBox.Text = rsa.Decrypt(enc, D, n);

                TimerAlgorithm.Enabled = false;
                TimeStop();
            }
        }
Beispiel #6
0
        //выполнение программы
        private async void RunButton_Click(object sender, EventArgs e)
        {
            OutputRichTextBox.Clear();
            VariablesRichTextBox.Clear();
            StackTraceRichTextBox.Clear();
            try
            {
                using (Executer = new Executer(SourceCodeFastColoredTextBox.Text))
                {
                    using (TokenSource = new CancellationTokenSource())
                    {
                        StopButton.Enabled = true;
                        RunButton.Enabled  = false;
                        //нужен для остановки выполнения программы
                        CancellationToken cancelToken = TokenSource.Token;
                        //запускаем выполнение программы в отдельной задаче
                        OutputRichTextBox.Text += await Task.Run(() => Executer.Execute(cancelToken), cancelToken);

                        StopButton.Enabled = false;
                        RunButton.Enabled  = true;
                    }
                    TokenSource = null;
                }
            }
            catch (Exception exp)
            {
                OutputRichTextBox.Text += exp.Message;
            }
        }
Beispiel #7
0
 private void EncButton_Click(object sender, EventArgs e)
 {
     if (InputRichTextBox.Text == "")
     {
         MessageBox.Show("Окно для ввода текста пусто");
     }
     else
     if (KeyTB.TextLength < 5 || KeyTB.TextLength > 256)
     {
         MessageBox.Show("Размер ключа должен находиться в пределах от 5 до 256 символов");
     }
     else
     {
         TimeStart();
         OutputRichTextBox.Clear();
         short[] key = new short[KeyTB.TextLength];
         for (int i = 0; i < KeyTB.TextLength; i++)
         {
             key[i] = (short)KeyTB.Text[i];
         }
         Algorithm_RC4.AlgorithmRC4 encoder = new Algorithm_RC4.AlgorithmRC4(key);
         string  testString = InputRichTextBox.Text;
         short[] testBytes  = new short[InputRichTextBox.TextLength];
         for (int i = 0; i < InputRichTextBox.TextLength; i++)
         {
             testBytes[i] = (short)InputRichTextBox.Text[i];
         }
         short[] result = encoder.Encode(testBytes, testBytes.Length);
         for (int i = 0; i < result.Length; i++)
         {
             OutputRichTextBox.Text += (char)result[i];
         }
         TimeStop();
     }
 }
Beispiel #8
0
        private void EncButton_Click(object sender, EventArgs e)
        {
            if (InputRichTextBox.Text == "")
            {
                MessageBox.Show("Введите данные для шифрования", "Ошибка");
            }
            else
            {
                if (!CheckInput(InputRichTextBox.Text))
                {
                    if (MessageBox.Show("В процессе шифровки может произойти потеря части текста.\n(Число символов должно быть кратно 16)\nПрервать шифровку?",
                                        "Предупреждение!", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        return;
                    }
                }
                if (!CheckKey(KeyTB.Text))
                {
                    MessageBox.Show("Неверный формат ключа", "Ошибка");
                    return;
                }
                TimeStart();
                byteKey = Encoding.Default.GetBytes(KeyTB.Text);
                E24      e24      = new E24();
                string[] inputMsg = new string[InputRichTextBox.Text.Length / 16];
                int      j        = 0;
                for (int i = 0; i < inputMsg.Length; i++)
                {
                    inputMsg[i] = InputRichTextBox.Text.Substring(j, 16);
                    j          += 16;
                }

                OutputRichTextBox.Clear();
                for (int i = 0; i < inputMsg.Length; i++)
                {
                    byte[] btFile = Encoding.Default.GetBytes(inputMsg[i]);

                    GenerationKeys newKey = new GenerationKeys();

                    if (!newKey.SetKey(byteKey))
                    {
                        MessageBox.Show("Error key!!!");
                        return;
                    }

                    encrByteFile = e24.Encrypt(btFile, newKey.eKey);
                    char[] eeee = Encoding.Default.GetChars(encrByteFile);
                    foreach (var f in eeee)
                    {
                        OutputRichTextBox.Text += f.ToString();
                    }
                }
                TimeStop();
            }
        }
        private void keyGenerateButton_Click(object sender, EventArgs e)
        {
            KeyTB.Clear();
            OutputRichTextBox.Clear();
            byte[] GenerateKey = new byte[32];
            Random RandomNumb  = new Random();

            for (int i = 0; i < GenerateKey.Length; i++)
            {
                GenerateKey[i] = (byte)RandomNumb.Next(0, 255);
                KeyTB.Text    += (char)GenerateKey[i];
            }
            byteKey = GenerateKey;
        }
        private void fileEncryptButton_Click(object sender, EventArgs e)
        {
            Algorithm_Encryption.ГОСТ_28147.E32 e32;

            if (InputRichTextBox.Text == "")
            {
                MessageBox.Show("Введите данные для шифрования", "Ошибка");
            }
            else
            {
                if (!CheckInput(InputRichTextBox.Text))
                {
                    if (MessageBox.Show("В процессе шифровки может произойти потеря части текста.\n(Число символов должно быть кратно 8)\nПрервать шифровку?",
                                        "Предупреждение!", MessageBoxButtons.YesNo) == DialogResult.Yes)
                    {
                        return;
                    }
                }
                byte[] btFile = Encoding.Default.GetBytes(InputRichTextBox.Text);

                if ((byteKey == null) || (byteKey.Length != 32))
                {
                    MessageBox.Show("Введдите 256-битный ключ.");
                }
                else
                {
                    DateTime StartTime;
                    MyTime    = 0;
                    StartTime = DateTime.Now;
                    TimerAlgorithm.Interval = 60000;//в милисекундах
                    TimerAlgorithm.Enabled  = true;

                    e32          = new Algorithm_Encryption.ГОСТ_28147.E32(btFile, byteKey);
                    encrByteFile = e32.GetEncryptFile;
                    OutputRichTextBox.Clear();
                    OutputRichTextBox.Text = Encoding.Default.GetString(encrByteFile);

                    TimerAlgorithm.Enabled = false;
                    DateTime EndTime = DateTime.Now;
                    ToolStripStatusLabel.Text        = "Время работы алгоритма шифрования (в миллисекундах)";
                    SecondsToolStripStatusLabel.Text = (EndTime - StartTime).TotalMilliseconds.ToString();
                }
            }
        }
Beispiel #11
0
        //запуск пошагового выполнения программы
        private void StepRunButton_Click(object sender, EventArgs e)
        {
            try
            {
                OutputRichTextBox.Clear();
                SourceCodeFastColoredTextBox.Enabled = false;
                StepRunButton.Enabled = false;
                RunButton.Enabled     = false;
                StopButton.Enabled    = true;

                Executer = new Executer(SourceCodeFastColoredTextBox.Text);

                StepIntoButton.Enabled = true;
                StepOverButton.Enabled = true;

                //выделяем первую строку в main
                ChangeLineColor(Executer.FindMain().LineNo - 1);
            }
            catch (Exception exp)
            {
                OutputRichTextBox.Text += exp.Message;
            }
        }
 private void DecButton_Click(object sender, EventArgs e)
 {
     if (OutputRichTextBox.Text == "")
     {
         MessageBox.Show("Введите данные для расшифрования", "Ошибка");
     }
     else
     if (KeyTB.TextLength != 32)
     {
         MessageBox.Show("Длина ключа должна быть равна 32 символам");
     }
     else
     {
         TimeStart();
         Algorithm_AES.AlgorithmAES aes = new Algorithm_AES.AlgorithmAES();
         byte[] key = new byte[KeyTB.TextLength];
         for (int i = 0; i < KeyTB.TextLength; i++)
         {
             key[i] = (byte)bufkey[i];
         }
         byte[] Buffer = aes.Decrypt(resbuf, key, IV);
         OutputRichTextBox.Clear();
         for (int i = 0; i < Buffer.Length; i++)
         {
             if (buf[i] - 1024 > 0)
             {
                 OutputRichTextBox.Text += (char)(Buffer[i] + 1024);
             }
             else
             {
                 OutputRichTextBox.Text += (char)Buffer[i];
             }
         }
         TimeStop();
     }
 }
 private void EncButton_Click(object sender, EventArgs e)
 {
     if (InputRichTextBox.TextLength == 0)
     {
         MessageBox.Show("Введите данные для шифрования", "Ошибка");
     }
     else
     if (KeyTB.TextLength != 32)
     {
         MessageBox.Show("Длина ключа должна быть равна 32 символам");
     }
     else
     if (InputRichTextBox.TextLength % 16 != 0)
     {
         MessageBox.Show("Длина текста должна быть кратна 16");
     }
     else
     {
         TimeStart();
         OutputRichTextBox.Clear();
         Algorithm_AES.AlgorithmAES aes = new Algorithm_AES.AlgorithmAES();
         byte[] Buffer;
         buf = new short[InputRichTextBox.TextLength];
         byte[] res = new byte[InputRichTextBox.TextLength];
         for (short i = 0; i < InputRichTextBox.TextLength; i++)
         {
             buf[i] = (short)InputRichTextBox.Text[i];
         }
         //массив buf необходимый для равботы с символами русского алфавита
         for (short i = 0; i < InputRichTextBox.TextLength; i++)
         {
             if (buf[i] - 1024 > 0)
             {
                 res[i] = (byte)(buf[i] - 1024);
             }
             else
             {
                 res[i] = (byte)buf[i];
             }
         }
         bufkey = new short[KeyTB.TextLength];
         byte[] key = new byte[KeyTB.TextLength];
         for (int i = 0; i < KeyTB.TextLength; i++)
         {
             bufkey[i] = (short)KeyTB.Text[i];
         }
         for (short i = 0; i < KeyTB.TextLength; i++)
         {
             if (bufkey[i] - 1024 > 0)
             {
                 key[i] = (byte)(bufkey[i] - 1024);
             }
             else
             {
                 key[i] = (byte)bufkey[i];
             }
         }
         Buffer = aes.Encrypt(res, key, IV);
         resbuf = Buffer;//запоминаем массив при необходимости расшифрования
         for (int i = 0; i < Buffer.Length; i++)
         {
             OutputRichTextBox.Text += (char)Buffer[i];
         }
         TimeStop();
     }
 }
 private void KeyTB_TextChanged(object sender, EventArgs e)
 {
     OutputRichTextBox.Clear();
 }
Beispiel #15
0
        //// Output Event Handlers & Properties ////

        private void OutputCutButton_Click(object sender, RoutedEventArgs e)
        {
            OutputRichTextBox.CopyToClipboard();
            OutputRichTextBox.Clear();
        }
Beispiel #16
0
 private void OutputClearButton_Click(object sender, RoutedEventArgs e)
 {
     OutputRichTextBox.Clear();
 }
 private void CloseKeyLabel_TextChanged(object sender, EventArgs e)
 {
     OutputRichTextBox.Clear();
 }