public abstract class BasePRNGStandalone extends Object implements IRandomStandalone, Serializable
An abstract class to facilitate implementing PRNG algorithms.
Modified slightly by jrandom for I2P (removing unneeded exceptions)| Modifier and Type | Field and Description |
|---|---|
protected byte[] | bufferA temporary buffer to serve random bytes. |
protected boolean | initialisedIndicate if this instance has already been initialised or not. |
protected String | nameThe canonical name prefix of the PRNG algorithm. |
protected int | ndxThe index into buffer of where the next byte will come from. |
| Modifier | Constructor and Description |
|---|---|
protected | BasePRNGStandalone(String name)Trivial constructor for use by concrete subclasses. |
| Modifier and Type | Method and Description |
|---|---|
void | addRandomByte(byte b)Supplement, or possibly replace, the random state of this PRNG with
a random byte. |
void | addRandomBytes(byte[] buffer)Supplement, or possibly replace, the random state of this PRNG with
a sequence of new random bytes. |
void | addRandomBytes(byte[] buffer,
int offset,
int length)Supplement, or possibly replace, the random state of this PRNG with
a sequence of new random bytes. |
Object | clone()Returns a clone copy of this instance. |
abstract void | fillBlock()Fill the internal buffer with random bytes |
void | init(Map<String,byte[]> attributes)Initialises the pseudo-random number generator scheme with the
appropriate attributes. |
boolean | isInitialised()Check whether this instance has been initialised. |
String | name()Returns the canonical name of this instance. |
byte | nextByte()Returns the next 8 bits of random data generated from this instance. |
void | nextBytes(byte[] out)Fill the output byte array with random bytes. |
void | nextBytes(byte[] out,
int offset,
int length)Fills the designated byte array, starting from byte at index
offset, for a maximum of length bytes with the
output of this generator instance. |
abstract void | setup(Map<String,byte[]> attributes)Set up this PRNG instance with the given attributes. |
protected volatile byte[] buffer
protected volatile boolean initialised
protected final String name
protected int ndx
protected BasePRNGStandalone(String name)
Trivial constructor for use by concrete subclasses.
name - the canonical name of this instance.public void addRandomByte(byte b)
IRandomStandaloneSupplement, or possibly replace, the random state of this PRNG with a random byte.
Implementations are not required to implement this method in any
meaningful way; this may be a no-operation, and implementations may
throw an UnsupportedOperationException.
addRandomByte in interface IRandomStandaloneb - The byte to add.public void addRandomBytes(byte[] buffer)
IRandomStandaloneSupplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
Implementations are not required to implement this method in any
meaningful way; this may be a no-operation, and implementations may
throw an UnsupportedOperationException.
addRandomBytes in interface IRandomStandalonebuffer - The buffer of new random bytes to add.public void addRandomBytes(byte[] buffer,
int offset,
int length)IRandomStandaloneSupplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.
Implementations are not required to implement this method in any
meaningful way; this may be a no-operation, and implementations may
throw an UnsupportedOperationException.
addRandomBytes in interface IRandomStandalonebuffer - The buffer of new random bytes to add.offset - The offset from whence to begin reading random bytes.length - The number of random bytes to add.public Object clone() throws CloneNotSupportedException
IRandomStandaloneReturns a clone copy of this instance.
clone in interface IRandomStandaloneclone in class ObjectCloneNotSupportedException - if cloning is not supportedpublic abstract void fillBlock()
public void init(Map<String,byte[]> attributes)
IRandomStandaloneInitialises the pseudo-random number generator scheme with the appropriate attributes.
init in interface IRandomStandaloneattributes - a set of name-value pairs that describe the desired
future instance behaviour.public boolean isInitialised()
public String name()
IRandomStandaloneReturns the canonical name of this instance.
name in interface IRandomStandalonepublic byte nextByte()
throws IllegalStateExceptionIRandomStandaloneReturns the next 8 bits of random data generated from this instance.
nextByte in interface IRandomStandaloneIllegalStateException - if the instance is not yet initialised.
theoretical limit for generating non-repetitive pseudo-random data.public void nextBytes(byte[] out)
throws IllegalStateExceptionIRandomStandalonenextBytes in interface IRandomStandaloneout - the output array to fillIllegalStateExceptionpublic void nextBytes(byte[] out,
int offset,
int length)
throws IllegalStateExceptionIRandomStandaloneFills the designated byte array, starting from byte at index
offset, for a maximum of length bytes with the
output of this generator instance.
nextBytes in interface IRandomStandaloneout - the placeholder to contain the generated random bytes.offset - the starting index in out to consider. This method
does nothing if this parameter is not within 0 and
out.length.length - the maximum number of required random bytes. This method
does nothing if this parameter is less than 1.IllegalStateException - if the instance is not yet initialised.
theoretical limit for generating non-repetitive pseudo-random data.