コード例 #1
0
ファイル: Form1.cs プロジェクト: 0leXis/RSA
        //--------------------------------
        //   Генерация ключей
        //--------------------------------
        public static void GenerateKeys(out int X, out int P, out long G, out long Y)
        {
            Log.AppendText("--------------------------" + Environment.NewLine);
            Log.AppendText("Генерация ключа" + Environment.NewLine);
            Log.AppendText("--------------------------" + Environment.NewLine);

            P = 0;
            ELGAMALEncryptDecrypt.ReshetoEratosfena(out P);

            var GTmp = new BigInteger(new Random().Next(10, P - 1));
            var M    = P - 1;

            Log.AppendText("M = " + Convert.ToString(M) + Environment.NewLine);
            while (true)
            {
                var Exit = true;
                GTmp++;
                if (BigInteger.ModPow(GTmp, M, P) == 1)
                {
                    for (var i = 1; i < P - 1; i++)
                    {
                        if (BigInteger.ModPow(GTmp, i, P) == 1)
                        {
                            Exit = false;
                        }
                    }
                }
                if (Exit)
                {
                    break;
                }
            }
            Log.AppendText("G = " + Convert.ToString(GTmp) + Environment.NewLine);
            G = Convert.ToInt64(Convert.ToString(GTmp));

            X = new Random().Next(10, P - 1);
            Log.AppendText("X = " + Convert.ToString(X) + Environment.NewLine);

            var YTmp = BigInteger.ModPow(G, X, P);

            Log.AppendText("Y = " + Convert.ToString(YTmp) + Environment.NewLine);
            Y = Convert.ToInt64(Convert.ToString(YTmp));
        }
コード例 #2
0
ファイル: Form1.cs プロジェクト: 0leXis/RSA
 private void buttonDecr_Click(object sender, EventArgs e)
 {
     textBoxLog.Clear();
     if (radioButtonRSA.Checked)
     {
         if (textBoxSecretDX.Text == "" || textBoxSecretNP.Text == "")
         {
             MessageBox.Show("Закрытый ключ не введён!");
         }
         else
         if (textBoxMsg.Text == "")
         {
             MessageBox.Show("Сообщение не введено!");
         }
         else
         {
             textBoxResult.Text = RSAEncryptDecrypt.Decrypt(Convert.ToInt32(textBoxSecretDX.Text), Convert.ToInt32(textBoxSecretNP.Text), textBoxMsg.Text);
         }
     }
     else
     {
         if (textBoxSecretDX.Text == "" || textBoxSecretNP.Text == "")
         {
             MessageBox.Show("Закрытый ключ не введён!");
         }
         else
         if (textBoxMsg.Text == "")
         {
             MessageBox.Show("Сообщение не введено!");
         }
         else
         {
             textBoxResult.Text = ELGAMALEncryptDecrypt.Decrypt(Convert.ToInt32(textBoxSecretDX.Text), Convert.ToInt32(textBoxSecretNP.Text), textBoxMsg.Text);
         }
     }
 }