private void testBtn_Click(object sender, EventArgs e) { this.Enabled = false; ansLabel.Visible = false; BigInteger testInt; BigInteger.TryParse(inputBox.Text, out testInt); if (testInt > 0) { if (CryptoMath.isPrime(testInt)) { ansLabel.Text = "Введённое число - простое"; } else { ansLabel.Text = "Введённое число - составное"; } } else { ansLabel.Text = "Введено неправильное значение"; } ansLabel.Visible = true; this.Enabled = true; }
private void RandomDataButton_Click(object sender, EventArgs e) { Random rand = new Random(); int size = rand.Next(11) + 2; BigInteger M = 0; while (!CryptoMath.isPrime((M - 1) / 2)) { M = CryptoMath.genSimpleRand(size); } MBox.Text = M.ToString(); ABox.Text = (CryptoMath.genRand(rand.Next(size - 1) + 1) + 2).ToString(); BBox.Text = (CryptoMath.genRand(rand.Next(size - 1) + 1)).ToString(); }
private void nextBtn_Click(object sender, EventArgs e) { if (CryptoMath.isPrime(p) && p > 2 && x > 1 && g > 1 && y > 0) { //var newForm = new TutorForm6(g, p, y, x); //newForm.Show(); Answers.g = g; Answers.p = p; Answers.y = y; Answers.x = x; Answers.interruptTutorial = false; this.Close(); } if (!CryptoMath.isPrime(p)) { wrongpLabel.Visible = true; } }
private void PohligButton_Click(object sender, EventArgs e) { BSGSProgressBar.Value = 0; BigInteger a, b, m, answer; a = 0; b = 0; m = 0; answer = 0; ResultLabel.Visible = false; ResultLabel.ForeColor = Color.Red; BigInteger.TryParse(ABox.Text, out a); BigInteger.TryParse(BBox.Text, out b); BigInteger.TryParse(MBox.Text, out m); if (a < 2 || b < 0 || m < 3 || b > m) { ResultLabel.Text = "Неправильный ввод данных"; } else if (!(CryptoMath.isPrime(m))) { ResultLabel.Text = "М должно быть простым"; } else { if (m.ToString().Length > 5) { ResultLabel.Text = "Слишком большое М - \nВозможно крайне долгое время работы"; ResultLabel.Visible = true; } try { BSGSProgressBar.Visible = true; this.Enabled = false; answer = SilverPohligHellman.PohligHellman(a, b, m, BSGSProgressBar); } catch (OutOfMemoryException) { ResultLabel.Text = "Нехватка оперативной памяти"; ResultLabel.Visible = true; this.Enabled = true; return; } if (answer == -1) { ResultLabel.Text = "Такого Х не найдено"; } else { ResultLabel.ForeColor = Color.Green; ResultLabel.Text = $"X = {answer}"; if (BigInteger.ModPow(a, answer, m) != b) { ResultLabel.ForeColor = Color.Red; ResultLabel.Text = "Такого Х не найдено"; } // ResultLabel.Text += "?"; } } BSGSProgressBar.Visible = false; ResultLabel.Visible = true; this.Enabled = true; }