Beispiel #1
0
        private void UseKnownСBox_CheckedChanged(object sender, EventArgs e)
        {
            switch (UseKnownСBox.Checked)
            {
            case true:
                if (GenParams.Encrypt == null || GenParams.Exp == null || GenParams.N == 0)
                {
                    MessageBox.Show("Сначала сгенерируйте параметры.");
                    UseKnownСBox.Checked = false;
                    return;
                }
                EncryptInputTBox.Enabled = EInputTBox.Enabled = NInputTBox.Enabled = false;
                EncryptInputTBox.Text    = GenParams.Encrypt.c.ToString();
                EInputTBox.Text          = GenParams.Exp.result.ToString();
                NInputTBox.Text          = GenParams.N.ToString();
                break;

            case false:
                EncryptInputTBox.Enabled = EInputTBox.Enabled = NInputTBox.Enabled = true;
                EncryptInputTBox.Clear();
                EInputTBox.Clear();
                NInputTBox.Clear();
                break;
            }
        }
Beispiel #2
0
        private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                MainFornLink.GTabControl.Enabled = false;
                MainFornLink.CancelPanel.Visible = true;
                BigInteger c;
                BigInteger exp;
                BigInteger n;
                if (!BigInteger.TryParse(EncryptInputTBox.Text, out c))
                {
                    MessageBox.Show("Недопустимые входные данные параметра (c)");
                    EncryptInputTBox.Clear();
                    return;
                }
                ;

                if (!BigInteger.TryParse(EInputTBox.Text, out exp))
                {
                    MessageBox.Show("Недопустимые входные данные параметра (e)");
                    EInputTBox.Clear();
                    return;
                }
                ;

                if (!BigInteger.TryParse(NInputTBox.Text, out n))
                {
                    MessageBox.Show("Недопустимые входные данные параметра (n)");
                    NInputTBox.Clear();
                    return;
                }
                ;

                Task.Factory.StartNew(() =>
                {
                    var items = CyclicCrack.Crack(c, exp, n);
                    MainFornLink.BeginInvoke(new Action(() =>
                    {
                        CrackDataLView.Items.Clear();
                        CrackDataLView.Items.AddRange(items.ToList().ConvertAll(i => new ListViewItem()
                        {
                            Text = i.Key, SubItems = { i.Value.ToString() }
                        }).ToArray());
                        MainFornLink.GTabControl.Enabled = true;
                        MainFornLink.CancelPanel.Visible = false;
                    }));
                });
            }
            catch (Exception)
            {
                MainFornLink.GTabControl.Enabled = true;
                MainFornLink.CancelPanel.Visible = false;
                //ignored
            }
        }
Beispiel #3
0
        private void KnownCrackBtn_Click(object sender, EventArgs e)
        {
            try
            {
                MainFornLink.GTabControl.Enabled = false;
                MainFornLink.CancelPanel.Visible = true;
                BigInteger exp;
                BigInteger n;
                if (!BigInteger.TryParse(KnownEInputTBox.Text, out exp))
                {
                    MessageBox.Show("Недопустимые входные данные параметра (e)");
                    EInputTBox.Clear();
                    return;
                }
                ;

                if (!BigInteger.TryParse(KnownNInputTBox.Text, out n))
                {
                    MessageBox.Show("Недопустимые входные данные параметра (n)");
                    NInputTBox.Clear();
                    return;
                }
                ;
                int    start       = (int)StartBorderUpDown.Value;
                int    last        = (int)LastBorderUpDown.Value;
                string encryptText = KnownEncryptRichTBox.Text;
                Regex  regex       = new Regex(@"\D");
                encryptText = regex.Replace(encryptText, " ");
                var encryptChars = encryptText.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList().ConvertAll(BigInteger.Parse);
                KnownDecryptRichTBox.Clear();
                Task.Factory.StartNew(() =>
                {
                    Dictionary <BigInteger, char> encrypt = KnownCrack.Crack(start, last, exp, n);
                    bool isunknown            = false;
                    List <BigInteger> unknown = new List <BigInteger>();
                    foreach (var big in encryptChars)
                    {
                        if (encrypt.TryGetValue(big, out char ch))
                        {
                            MainFornLink.BeginInvoke(new Action(() =>
                            {
                                if (!TextIsNumberCBox.Checked)
                                {
                                    KnownDecryptRichTBox.AppendText(ch.ToString());
                                }
                                else
                                {
                                    KnownDecryptRichTBox.AppendText(((int)ch).ToString() + " ");
                                }
                            }));
                        }
                        else
                        {
                            unknown.Add(big);
                            isunknown = true;
                        }
                    }
                    if (isunknown)
                    {
                        MessageBox.Show($"Не удалось расшифровать символы :\n{string.Join("\n", unknown)}\nПопробуйте увеличить границы перебора символов.");
                    }
                    MainFornLink.BeginInvoke(new Action(() =>
                    {
                        MainFornLink.GTabControl.Enabled = true;
                        MainFornLink.CancelPanel.Visible = false;
                    }));
                });
            }
            catch (Exception)
            {
                MainFornLink.GTabControl.Enabled = true;
                MainFornLink.CancelPanel.Visible = false;
                //ignored
            }
        }