private void buttonHitungY_Click(object sender, EventArgs e) { ClearKey(); uint p, g, x; if (uint.TryParse(textBoxP.Text, out p) && uint.TryParse(textBoxG.Text, out g) && uint.TryParse(textBoxX.Text, out x)) { P = p; G = g; X = x; if (!Kripto.IsMiller(P, (int)Math.Min(P, (ulong)100))) { MessageBox.Show("P bukan prima"); } else if (G >= P || G < 1) { MessageBox.Show("G antara 1 sampai " + (P - 1)); } else if (X >= P || X < 1) { MessageBox.Show("X antara 1 sampai " + (P - 1)); } else if (!Kripto.IsGeneratorModulo(g, p)) { MessageBox.Show("G bukan generator modulo P"); } else { dataGridViewNotSortAbleKey.Rows.Add("P = " + P); dataGridViewNotSortAbleKey.Rows.Add("G = " + G); dataGridViewNotSortAbleKey.Rows.Add("X = " + X); dataGridViewNotSortAbleKey.Rows.Add("Y = G^X % P"); dataGridViewNotSortAbleKey.Rows.Add("Y = " + G + "^" + X + " % " + P); Y = Kripto.FastExponent(G, X, P, dataGridViewNotSortAbleKey); dataGridViewNotSortAbleKey.Rows.Add("Y = " + G + "^" + X + " % " + P + " = " + Y); textBoxY.Text = Y.ToString(); int t = 0; ulong temp = P; while (temp > 1) { t++; temp >>= 1; } numericUpDownBlockSize.Maximum = t; numericUpDownBlockSize.Value = t; buttonEnkripsi.Enabled = true; } } else { MessageBox.Show("Cek p, q dan x"); } }
private void buttonHitungN_Click(object sender, EventArgs e) { textBoxE.Clear(); textBoxDPMinQMin.Clear(); textBoxN.Clear(); textBoxTotientNPPlusQPlus.Clear(); buttonRandomE.Enabled = false; buttonHitungD.Enabled = false; uint p, q; if (uint.TryParse(textBoxP.Text, out p) && uint.TryParse(textBoxQ.Text, out q)) { P = p; Q = q; if (!Kripto.IsMiller(P, (int)Math.Min(P, (ulong)100))) { MessageBox.Show("P bukan prima"); } else if (!Kripto.IsMiller(Q, (int)Math.Min(Q, (ulong)100))) { MessageBox.Show("Q bukan prima"); } else { N = P * Q; TN[0] = (P + 1) * (Q + 1); TN[1] = (P + 1) * (Q - 1); TN[2] = (P - 1) * (Q + 1); TN[3] = (P - 1) * (Q - 1); textBoxN.Text = N.ToString(); textBoxTotientNPPlusQPlus.Text = TN[0].ToString(); textBoxTotientNPPlusQMin.Text = TN[1].ToString(); textBoxTotientNPMinQPlus.Text = TN[2].ToString(); textBoxTotientNPMinQMin.Text = TN[3].ToString(); buttonRandomE.Enabled = true; buttonHitungD.Enabled = true; } } else { MessageBox.Show("Cek p dan q"); } }
private void buttonHitungN_Click(object sender, EventArgs e) { ClearKey(); uint p, q; if (uint.TryParse(textBoxP.Text, out p) && uint.TryParse(textBoxQ.Text, out q)) { P = p; Q = q; if (!Kripto.IsMiller(P, (int)Math.Min(P, (ulong)100))) { MessageBox.Show("P bukan prima"); } else if ((P + 1) % 4 != 0) { MessageBox.Show("P + 1 tidak habis dibagi 4"); } else if (!Kripto.IsMiller(Q, (int)Math.Min(Q, (ulong)100))) { MessageBox.Show("Q bukan prima"); } else if ((Q + 1) % 4 != 0) { MessageBox.Show("Q + 1 tidak habis dibagi 4"); } else { dataGridViewNotSortAbleEEA.Rows.Add("P = " + P); dataGridViewNotSortAbleEEA.Rows.Add("Q = " + Q); N = P * Q; dataGridViewNotSortAbleEEA.Rows.Add("N = " + N); textBoxN.Text = N.ToString(); buttonEnkripsi.Enabled = true; } } else { MessageBox.Show("Cek p dan q"); } }