Пример #1
0
 //подписываем сообщение
 public string SingGen(byte[] h, BInteger d)
 {
     BInteger alpha = new BInteger(h);
     BInteger e = alpha % n;
     if (e == 0)
         e = 1;
     BInteger k = new BInteger();
     ECPoint C = new ECPoint();
     BInteger r = new BInteger();
     BInteger s = new BInteger();
     do
     {
         do
         {
             k.genRandomBits(n.bitCount(), new Random());
         } while ((k < 0) || (k > n));
         C = ECPoint.multiply(k, G);
         r = C.x % n;
         s = ((r * d) + (k * e)) % n;
     } while ((r == 0) || (s == 0));
     string Rvector = padding(r.ToHexString(), n.bitCount() / 4);
     string Svector = padding(s.ToHexString(), n.bitCount() / 4);
     return Rvector + Svector;
 }