예제 #1
0
        private void RSAEncryptButton_Click(object sender, RoutedEventArgs e)
        {
            if (RSAToEncodeBox.Text.Length > 0)
            {
                if (PrimePNumberBox.Text.Length > 0 && PrimeQNumberBox.Text.Length > 0)
                {
                    long p = Convert.ToInt64(PrimePNumberBox.Text);
                    long q = Convert.ToInt64(PrimeQNumberBox.Text);

                    if (RSA.IsTheNumberSimple(q) && RSA.IsTheNumberSimple(p))
                    {
                        EncryptedRSAStringLabel.Content = "";
                        DecryptedRSAStringLabel.Content = "";

                        long n  = p * q;
                        long m  = (p - 1) * (q - 1);
                        long d  = RSA.Calculate_d(m);
                        long e_ = RSA.Calculate_e(d, m);

                        List <string> result = new RSA().Encrypt(RSAToEncodeBox.Text.Trim().ToUpper(), e_, n);

                        foreach (string item in result)
                        {
                            EncryptedRSAStringLabel.Content += item + " ";
                        }

                        DKeyNumberBox.Text = d.ToString();
                        NKeyNumberBox.Text = n.ToString();
                    }
                    else
                    {
                        MessageBox.Show("p или q - не простые числа!");
                    }
                }
                else
                {
                    MessageBox.Show("Введите p и q!");
                }
            }
            else
            {
                MessageBox.Show("Введите тескт для шифрования");
            }
        }