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()); } }
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 } }