Private Sub cmdKeyGen_Click(ByVal eventSender
As System.Object, ByVal _ eventArgs As System.EventArgs) Handles
cmdKeyGen.Click
Dim D, E1, N As Double
Const PQ_UP As Short = 9999 'set upper limit of random number
Const PQ_LW As Short = 3170 'set lower limit of random number
Const KEY_LOWER_LIMIT As Integer = 10000000 'set for 64bit minimum
p = 0 : q = 0
Randomize()
Do Until D > KEY_LOWER_LIMIT 'makes sure keys are 64bit minimum
Do Until IsPrime(p) And IsPrime(q)
p = Int((PQ_UP - PQ_LW + 1) * Rnd() + PQ_LW)
q = Int((PQ_UP - PQ_LW + 1) * Rnd() + PQ_LW)
Loop
N = p * q
PHI = (p - 1) * (q - 1)
E1 = GCD(PHI)
D = Euler(E1, PHI)
Loop
Key(1) = E1
Key(2) = D
Key(3) = N
txtP.Text = CStr(p) 'P
txtQ.Text = CStr(q) 'Q
txtPhi.Text = CStr(PHI) 'PHI
txtE.Text = CStr(Key(1)) 'E
txtD.Text = CStr(Key(2)) 'D
txtN.Text = CStr(Key(3)) 'N
End Sub
private void cmdKeyGen_Click(object sender,
System.EventArgs e)
{
double
D = 0,E1 = 0,N = 0;
const
short PQ_UP = 9999; //set upper limit
of random number
const short PQ_LW = 3170;
//set lower limit of random number
const int KEY_LOWER_LIMIT = 10000000; //set for 64bit minimum
p =
0; q = 0;
while
(!(D > KEY_LOWER_LIMIT)) //makes sure keys are 64bit minimum
{
while
(!(IsPrime(p) && IsPrime(q)))
{
p
= Convert.ToInt64((PQ_UP - PQ_LW + 1) * _
(new
Random()).NextDouble() + PQ_LW);
q
= Convert.ToInt64((PQ_UP - PQ_LW + 1) * _
(new
Random()).NextDouble() + PQ_LW);
}
N
= p * q;
PHI
= (p - 1) * (q - 1);
E1
= GCD(PHI);
D
= Euler(E1, PHI);
}
Key[1]
= E1;
Key[2]
= D;
Key[3]
= N;
txtP.Text
= p.ToString();
txtQ.Text
= q.ToString();
txtPhi.Text
= PHI.ToString();
txtE.Text
= Key[1].ToString();
txtD.Text
= Key[2].ToString();
txtN.Text
= Key[3].ToString();
}