gnu.crypto.prng
public class CSPRNG extends BasePRNG
An entropy pool-based pseudo-random number generator based on the PRNG in Peter Gutmann's cryptlib (http://www.cs.auckland.ac.nz/~pgut001/cryptlib/).
The basic properties of this generator are:
Field Summary | |
---|---|
static String | BLOCKING
Property name for whether or not to wait for the slow poll to
complete, passed as a Boolean. |
static String | FILE_SOURCES
Property name for the list of files to read for random values. |
static String | OTHER_SOURCES
Property name for a list of other sources of entropy. |
static String | PROGRAM_SOURCES
Property name for the list of programs to execute, and use the output
as new random bytes. |
static String | URL_SOURCES
Property name for the list of URLs to poll for random values. |
Constructor Summary | |
---|---|
CSPRNG() |
Method Summary | |
---|---|
void | addQuality(double quality) |
void | addRandomByte(byte b)
Add a single random byte to the randomness pool. |
void | addRandomBytes(byte[] buf, int off, int len)
Add an array of bytes into the randomness pool. |
Object | clone() |
void | fillBlock() |
protected void | finalize() |
double | getQuality() |
static IRandom | getSystemInstance() Create and initialize a CSPRNG instance with the "system" parameters; the files, URLs, programs, and EntropySource sources used by the instance are derived from properties set in the system Properties. All properties are of the from name.N, where name is the name of the source, and N is an integer (staring at 1) that indicates the preference number for that source. The following vales for name are used here:
|
void | setup(Map attrib) |
See Also: SimpleList
Parameters: b The byte to add.
Parameters: buf The byte array. off The offset from whence to start reading bytes. len The number of bytes to add.
Throws: ArrayIndexOutOfBoundsException If off or len are out of the range of buf.
Create and initialize a CSPRNG instance with the "system" parameters; the files, URLs, programs, and EntropySource sources used by the instance are derived from properties set in the system Properties.
All properties are of the from name.N, where name is the name of the source, and N is an integer (staring at 1) that indicates the preference number for that source.
The following vales for name are used here:
These properties are file sources, passed as the FILE_SOURCES parameter of the instance. The property value is a 4-tuple formatted as:
quality ; offset ; count ; path
The parameters are mapped to the parameters defined for FILE_SOURCES. Leading or trailing spaces on any item are trimmed off.
These properties are URL sources, passed as the URL_SOURCES parameter of the instance. The property is formatted the same way as file sources, but the path argument must be a valid URL.
These properties are program sources, passed as the PROGRAM_SOURCES parameter of the instance. This property is formatted the same way as file and URL sources, but the last argument is a program and its arguments.
These properties are other sources, passed as the OTHER_SOURCES parameter of the instance. The property value must be the full name of a class that implements the EntropySource interface and has a public no-argument constructor.
Finally, a boolean property "gnu.crypto.csprng.blocking" can be set to the desired value of BLOCKING.
An example of valid properties would be:
gnu.crypto.csprng.blocking=true gnu.crypto.csprng.file.1=75.0;0;256;/dev/random gnu.crypto.csprng.file.2=10.0;0;100;/home/user/file gnu.crypto.csprng.url.1=5.0;0;256;http://www.random.org/cgi-bin/randbyte?nbytes=256 gnu.crypto.csprng.url.2=0;256;256;http://slashdot.org/ gnu.crypto.csprng.program.1=0.5;0;10;last -n 50 gnu.crypto.csprng.program.2=0.5;0;10;tcpdump -c 5 gnu.crypto.csprng.other.1=foo.bar.MyEntropySource gnu.crypto.csprng.other.2=com.company.OtherEntropySource