public abstract class RandomBitsSource
extends java.lang.Object
Please note that, by the very nature of PRNGs, the security of their output depends crucially on the amount and "quality" of seeding entropy used. Implementing classes should provide guidance as to their proper initialization and use.
Each instance of this class contains an instance of RNGTest
, which must be used by sub-classes in FIPS Approved Mode to ensure proper continuous testing of their output for failure to a constant value.
FIPS_140_2
, getRNGTest()
, EntropySource
, SpinnerEntropySource
Modifier | Constructor and Description |
---|---|
protected |
RandomBitsSource()
Empty constructor.
|
Modifier and Type | Method and Description |
---|---|
abstract void |
clear()
Clears out sensitive data pools within the PRNG.
|
static RandomBitsSource |
getDefault()
Get the default random bits source.
|
protected RNGTest |
getRNGTest()
Returns the
RNGTest instance for this RandomBitsSource instance. |
oracle.security.crypto.core.math.BigInt |
randomBigInt(int len)
Provided as an alternative to
BigInt(int, java.util.Random) . |
java.math.BigInteger |
randomBigInteger(int len)
Provided as an alternative to
BigInteger(int, java.util.Random) . |
abstract byte |
randomByte()
Generate a random byte.
|
byte[] |
randomBytes(byte[] bytes)
Fill a byte array with random bytes.
|
void |
seed()
Seed from the system default entropy source.
|
abstract void |
seed(byte[] seed)
Seed the PRNG with the supplied array of bytes.
|
abstract void |
seed(EntropySource egs)
Seed the PRNG with a default number of bytes from the supplied entropy source.
|
static void |
setDefault(RandomBitsSource rbs)
Sets the default random bits source for the current run-time environment.
|
protected final RNGTest getRNGTest()
RNGTest
instance for this RandomBitsSource
instance.public abstract void seed(byte[] seed)
public abstract void seed(EntropySource egs)
Note that entropy source algorithms are frequently time and/or resource-intensive, which may cause significant delay before this method returns.
public void seed()
public abstract byte randomByte()
public byte[] randomBytes(byte[] bytes)
public java.math.BigInteger randomBigInteger(int len)
BigInteger(int, java.util.Random)
. Returns a BigInteger uniformly distributed within the interval of the requested length (polling for as many random bytes from the random bits source as necessary). (Note that, as a consequence, the bit length of the returned integer will -- exactly half the time -- be less than the length requested.)public oracle.security.crypto.core.math.BigInt randomBigInt(int len)
BigInt(int, java.util.Random)
. Returns a BigInt uniformly distributed within the interval of the requested length (polling for as many random bytes from the random bits source as necessary). (Note that, as a consequence, the bit length of the returned integer will -- exactly half the time -- be less than the length requested.)public static RandomBitsSource getDefault()
RandomBitsSource
is created, seeded and returned. Note: Successive calls to getDefault
will return additional references to the same RandomBitsSource
instance. This must be taken into consideration by programmers developing multi-threaded applications.public static void setDefault(RandomBitsSource rbs)
getDefault()
public abstract void clear()