Пример #1
0
        private void RemoveSalt2_Click(object sender, EventArgs e)
        {
            var row = KnownDecryptRichTBox.Text;

            KnownDecryptRichTBox.Clear();
            for (int i = 0; i < row.Length; i++)
            {
                KnownDecryptRichTBox.AppendText(((char)(row[i] - 2000)).ToString());
            }
        }
Пример #2
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
            }
        }