Package org.bouncycastle.math
Class Primes
java.lang.Object
org.bouncycastle.math.Primes
Utility methods for generating primes and testing for primality.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classUsed to return the output from the Enhanced Miller-Rabin Probabilistic Primality Teststatic classUsed to return the output from the Shawe-Taylor Random_Prime Routine -
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic Primes.MROutputenhancedMRProbablePrimeTest(BigInteger candidate, SecureRandom random, int iterations) FIPS 186-4 C.3.2 Enhanced Miller-Rabin Probabilistic Primality Test Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases.static Primes.STOutputgenerateSTRandomPrime(Digest hash, int length, byte[] inputSeed) FIPS 186-4 C.6 Shawe-Taylor Random_Prime Routine Construct a provable prime number using a hash function.static booleanhasAnySmallFactors(BigInteger candidate) A fast check for small divisors, up to some implementation-specific limit.static booleanisMRProbablePrime(BigInteger candidate, SecureRandom random, int iterations) FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases.static booleanisMRProbablePrimeToBase(BigInteger candidate, BigInteger base) FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test (to a fixed base).
-
Field Details
-
SMALL_FACTOR_LIMIT
public static final int SMALL_FACTOR_LIMIT- See Also:
-
-
Constructor Details
-
Primes
public Primes()
-
-
Method Details
-
generateSTRandomPrime
FIPS 186-4 C.6 Shawe-Taylor Random_Prime Routine Construct a provable prime number using a hash function.- Parameters:
hash- theDigestinstance to use (as "Hash()"). Cannot be null.length- the length (in bits) of the prime to be generated. Must be at least 2.inputSeed- the seed to be used for the generation of the requested prime. Cannot be null or empty.- Returns:
- an
Primes.STOutputinstance containing the requested prime.
-
enhancedMRProbablePrimeTest
public static Primes.MROutput enhancedMRProbablePrimeTest(BigInteger candidate, SecureRandom random, int iterations) FIPS 186-4 C.3.2 Enhanced Miller-Rabin Probabilistic Primality Test Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases. This is an alternative toisMRProbablePrime(BigInteger, SecureRandom, int)that provides more information about a composite candidate, which may be useful when generating or validating RSA moduli.- Parameters:
candidate- theBigIntegerinstance to test for primality.random- the source of randomness to use to choose bases.iterations- the number of randomly-chosen bases to perform the test for.- Returns:
- an
Primes.MROutputinstance that can be further queried for details.
-
hasAnySmallFactors
A fast check for small divisors, up to some implementation-specific limit.- Parameters:
candidate- theBigIntegerinstance to test for division by small factors.- Returns:
trueif the candidate is found to have any small factors,falseotherwise.
-
isMRProbablePrime
FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test Run several iterations of the Miller-Rabin algorithm with randomly-chosen bases.- Parameters:
candidate- theBigIntegerinstance to test for primality.random- the source of randomness to use to choose bases.iterations- the number of randomly-chosen bases to perform the test for.- Returns:
falseif any witness to compositeness is found amongst the chosen bases (socandidateis definitely NOT prime), or elsetrue(indicating primality with some probability dependent on the number of iterations that were performed).
-
isMRProbablePrimeToBase
FIPS 186-4 C.3.1 Miller-Rabin Probabilistic Primality Test (to a fixed base). Run a single iteration of the Miller-Rabin algorithm against the specified base.- Parameters:
candidate- theBigIntegerinstance to test for primality.base- the base value to use for this iteration.- Returns:
falseif the specified base is a witness to compositeness (socandidateis definitely NOT prime), or elsetrue.
-