public string SingGen(byte[] h, BigInteger d) { BigInteger alpha = BigInteger.Parse(SupportEDS.DecStringFromByteArray(h)); BigInteger e = alpha % this.curv.N; if (e == 0) { e = 1; } BigInteger k = new BigInteger(); EllipticCurve_Point C = new EllipticCurve_Point(); BigInteger r = new BigInteger(); BigInteger s = new BigInteger(); do { Random rnd = new Random(); do { k = Maths.RandBigInteger(Maths.Length(this.curv.N), rnd); }while ((k < 0) || (k > this.curv.N)); curv.Mult(k, this.curv.G, ref C); r = C.X % this.curv.N; s = ((r * d) + (k * e)) % this.curv.N; }while ((r == 0) || (s == 0)); int midl = Maths.Length(this.curv.N) / 4; string Rvector = SupportEDS.Add0PaddingToString(r.ToString("X"), midl); string Svector = SupportEDS.Add0PaddingToString(s.ToString("X"), midl); return(Rvector + Svector); }
private void Gen_textbox_b_GenButtonClick(object sender, RoutedEventArgs e) { if (gen_textbox_b.down_textbox.Text != "" && gen_textbox_b.down_textbox.Text != "0") { int bits = Convert.ToInt32(gen_textbox_b.down_textbox.Text); BigInteger rand_b = Maths.RandBigInteger(bits, new Random()); gen_textbox_b.value_textbox.Text = rand_b.ToString(); } }
public BigInteger GenPrivateKey(int BitSize) { BigInteger d = new BigInteger(); Random rnd = new Random(); do { d = Maths.RandBigInteger(BitSize, rnd); }while ((d < 0) || (d > this.curv.N)); return(d); }
private void BeginRandomGeneration() { int bits = Convert.ToInt32(this.complexity_rand_scheme.Text); Random rnd = new Random(); BigInteger p = Maths.genPseudoPrime(bits, rnd); gen_textbox_p.value_textbox.Text = p.ToString(); BigInteger a = Maths.RandBigInteger(bits, rnd); gen_textbox_a.value_textbox.Text = a.ToString(); BigInteger b = Maths.RandBigInteger(bits, rnd); gen_textbox_b.value_textbox.Text = b.ToString(); bw = new BackgroundWorker(); algo = new Schoof(1, a, b, p, bw); bw.WorkerSupportsCancellation = true; bw.DoWork += new DoWorkEventHandler(Bw_DoWork); bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(Bw_RunWorkerCompletedRand); this.schoof_stop_button.Visibility = Visibility.Visible; this.schoof_value.Text = ""; bw.RunWorkerAsync(); }