Class BasePRNGStandalone
- All Implemented Interfaces:
IRandomStandalone
,Serializable
,Cloneable
- Direct Known Subclasses:
FortunaStandalone
,FortunaStandalone.Generator
An abstract class to facilitate implementing PRNG algorithms.
Modified slightly by jrandom for I2P (removing unneeded exceptions)- Version:
- $Revision: 1.1 $
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected byte[]
A temporary buffer to serve random bytes.protected boolean
Indicate if this instance has already been initialised or not.protected final String
The canonical name prefix of the PRNG algorithm.protected int
The index into buffer of where the next byte will come from. -
Constructor Summary
ModifierConstructorDescriptionprotected
BasePRNGStandalone
(String name) Trivial constructor for use by concrete subclasses. -
Method Summary
Modifier and TypeMethodDescriptionvoid
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.clone()
Returns a clone copy of this instance.abstract void
void
Initialises the pseudo-random number generator scheme with the appropriate attributes.boolean
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) void
nextBytes
(byte[] out, int offset, int length) Fills the designated byte array, starting from byte at indexoffset
, for a maximum oflength
bytes with the output of this generator instance.abstract void
-
Field Details
-
name
The canonical name prefix of the PRNG algorithm. -
initialised
protected volatile boolean initialisedIndicate if this instance has already been initialised or not. -
buffer
protected volatile byte[] bufferA temporary buffer to serve random bytes. -
ndx
protected int ndxThe index into buffer of where the next byte will come from.
-
-
Constructor Details
-
BasePRNGStandalone
Trivial constructor for use by concrete subclasses.
- Parameters:
name
- the canonical name of this instance.
-
-
Method Details
-
name
Description copied from interface:IRandomStandalone
Returns the canonical name of this instance.
- Specified by:
name
in interfaceIRandomStandalone
- Returns:
- the canonical name of this instance.
-
init
Description copied from interface:IRandomStandalone
Initialises the pseudo-random number generator scheme with the appropriate attributes.
- Specified by:
init
in interfaceIRandomStandalone
- Parameters:
attributes
- a set of name-value pairs that describe the desired future instance behaviour.
-
nextByte
Description copied from interface:IRandomStandalone
Returns the next 8 bits of random data generated from this instance.
- Specified by:
nextByte
in interfaceIRandomStandalone
- Returns:
- the next 8 bits of random data generated from this instance.
- Throws:
IllegalStateException
- if the instance is not yet initialised. theoretical limit for generating non-repetitive pseudo-random data.
-
nextBytes
- Throws:
IllegalStateException
-
nextBytes
Description copied from interface:IRandomStandalone
Fills the designated byte array, starting from byte at index
offset
, for a maximum oflength
bytes with the output of this generator instance.- Specified by:
nextBytes
in interfaceIRandomStandalone
- Parameters:
out
- 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 within0
andout.length
.length
- the maximum number of required random bytes. This method does nothing if this parameter is less than1
.- Throws:
IllegalStateException
- if the instance is not yet initialised. theoretical limit for generating non-repetitive pseudo-random data.
-
addRandomByte
public void addRandomByte(byte b) Description copied from interface:IRandomStandalone
Supplement, 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
.- Specified by:
addRandomByte
in interfaceIRandomStandalone
- Parameters:
b
- The byte to add.
-
addRandomBytes
public void addRandomBytes(byte[] buffer) Description copied from interface:IRandomStandalone
Supplement, 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
.- Specified by:
addRandomBytes
in interfaceIRandomStandalone
- Parameters:
buffer
- The buffer of new random bytes to add.
-
addRandomBytes
public void addRandomBytes(byte[] buffer, int offset, int length) Description copied from interface:IRandomStandalone
Supplement, 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
.- Specified by:
addRandomBytes
in interfaceIRandomStandalone
- Parameters:
buffer
- 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.
-
isInitialised
public boolean isInitialised() -
clone
Description copied from interface:IRandomStandalone
Returns a clone copy of this instance.
- Specified by:
clone
in interfaceIRandomStandalone
- Overrides:
clone
in classObject
- Returns:
- a clone copy of this instance.
- Throws:
CloneNotSupportedException
-
setup
-
fillBlock
public abstract void fillBlock()
-