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