|
Uncommons Maths API (Version 1.2.3) |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.util.Random org.uncommons.maths.random.AESCounterRNG
public class AESCounterRNG
Non-linear random number generator based on the AES block cipher in counter mode. Uses the seed as a key to encrypt a 128-bit counter using AES(Rijndael).
By default, we only use a 128-bit key for the cipher because any larger key requires
the inconvenience of installing the unlimited strength cryptography policy
files for the Java platform. Larger keys may be used (192 or 256 bits) but if the
cryptography policy files are not installed, a
GeneralSecurityException
will be thrown.
NOTE: Because instances of this class require 128-bit seeds, it is not
possible to seed this RNG using the Random.setSeed(long)
method inherited
from Random
. Calls to this method will have no effect.
Instead the seed must be set by a constructor.
NOTE: THIS CLASS IS NOT SERIALIZABLE
Constructor Summary | |
---|---|
AESCounterRNG()
Creates a new RNG and seeds it using 128 bits from the default seeding strategy. |
|
AESCounterRNG(byte[] seed)
Creates an RNG and seeds it with the specified seed data. |
|
AESCounterRNG(int seedSizeBytes)
Seed the RNG using the default seed generation strategy to create a seed of the specified size. |
|
AESCounterRNG(SeedGenerator seedGenerator)
Seed the RNG using the provided seed generation strategy to create a 128-bit seed. |
Method Summary | |
---|---|
byte[] |
getSeed()
|
protected int |
next(int bits)
|
Methods inherited from class java.util.Random |
---|
nextBoolean, nextBytes, nextDouble, nextFloat, nextGaussian, nextInt, nextInt, nextLong, setSeed |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public AESCounterRNG() throws GeneralSecurityException
GeneralSecurityException
- If there is a problem initialising the AES cipher.public AESCounterRNG(SeedGenerator seedGenerator) throws SeedException, GeneralSecurityException
seedGenerator
- The seed generation strategy that will provide
the seed value for this RNG.
SeedException
- If there is a problem generating a seed.
GeneralSecurityException
- If there is a problem initialising the AES cipher.public AESCounterRNG(int seedSizeBytes) throws GeneralSecurityException
seedSizeBytes
- The number of bytes to use for seed data. Valid values
are 16 (128 bits), 24 (192 bits) and 32 (256 bits). Any other values will
result in an exception from the AES implementation.
GeneralSecurityException
- If there is a problem initialising the AES cipher.public AESCounterRNG(byte[] seed) throws GeneralSecurityException
seed
- The seed data used to initialise the RNG.
GeneralSecurityException
- If there is a problem initialising the AES cipher.Method Detail |
---|
public byte[] getSeed()
getSeed
in interface RepeatableRNG
protected final int next(int bits)
next
in class Random
|
Uncommons Maths API (Version 1.2.3) |
||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |