private static BigInteger GeneratePositiveNumber(byte[] buffer) { var result = BigInteger.Zero; var isNegative = true; while (isNegative) { rngCsp.GetBytes(buffer); //we fill up our array with random bits result = PrimeNumberTest.CreateBigNumber(buffer); if (result > BigInteger.Zero && !result.IsEven) { isNegative = false; } } return(result); }
private BigInteger GenerateRandomPrimeNumber(int k) { NotFound: var buffer = new byte[_size]; var possiblePrime = GeneratePositiveNumber(buffer); if (!PrimeNumberTest.FermatTheorem(possiblePrime)) { goto NotFound; } if (PrimeNumberTest.MillerRabinTest(possiblePrime, k)) { Console.WriteLine("PrimeNumber: {0}", possiblePrime); return(possiblePrime); } goto NotFound; }