public void DefaultRandom () { // based on bugzilla entry #68452 BigInteger bi = new BigInteger (); Assert.AreEqual (0, bi.BitCount (), "before randomize"); bi.Randomize (); // Randomize returns a random number of BitCount length // so in this case it will ALWAYS return 0 Assert.AreEqual (0, bi.BitCount (), "after randomize"); Assert.AreEqual (new BigInteger (0), bi, "Zero"); }
// this part is quite fast private void GenerateKeyPair () { x = BigInteger.GenerateRandom (160); while ((x == 0) || (x >= q)) { // size of x (private key) isn't affected by the keysize (512-1024) x.Randomize (); } // calculate the public key y = g^x % p y = g.ModPow (x, p); }