コード例 #1
0
        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);
        }
コード例 #2
0
        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;
        }