Esempio n. 1
0
        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();
        }
Esempio n. 3
0
 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;
        }