//подписываем сообщение 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; }