//-------------------------------- // Генерация ключей //-------------------------------- 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)); }
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); } } }