コード例 #1
0
ファイル: EllipticCurve_EDS.cs プロジェクト: Tgjmjgj/edsa
        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);
        }
コード例 #2
0
ファイル: CreateSchemePage.xaml.cs プロジェクト: Tgjmjgj/edsa
 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();
     }
 }
コード例 #3
0
ファイル: EllipticCurve_EDS.cs プロジェクト: Tgjmjgj/edsa
        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);
        }
コード例 #4
0
ファイル: CreateSchemePage.xaml.cs プロジェクト: Tgjmjgj/edsa
        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();
        }