Пример #1
0
        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");
            }
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
        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");
            }
        }