Package gnu.crypto.prng
Class FortunaStandalone
java.lang.Object
gnu.crypto.prng.BasePRNGStandalone
gnu.crypto.prng.FortunaStandalone
- All Implemented Interfaces:
IRandomStandalone,Serializable,Cloneable
- Direct Known Subclasses:
AsyncFortunaStandalone
The Fortuna continuously-seeded pseudo-random number generator. This
generator is composed of two major pieces: the entropy accumulator
and the generator function. The former takes in random bits and
incorporates them into the generator's state. The latter takes this
base entropy and generates pseudo-random bits from it.
There are some things users of this class must be aware of:
- Adding Random Data
- This class does not do any polling of random sources, but rather provides an interface for adding random events. Applications that use this code must provide this mechanism. We use this design because an application writer who knows the system he is targeting is in a better position to judge what random data is available.
- Storing the Seed
- This class implements
Serializablein such a way that it writes a 64 byte seed to the stream, and reads it back again when being deserialized. This is the extent of seed file management, however, and those using this class are encouraged to think deeply about when, how often, and where to store the seed.
References:
- Niels Ferguson and Bruce Schneier, Practical Cryptography, pp. 155--184. Wiley Publishing, Indianapolis. (2003 Niels Ferguson and Bruce Schneier). ISBN 0-471-22357-3.
- See Also:
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final IRandomStandaloneprotected long(package private) static final int(package private) static final intprotected intprotected final MessageDigest[]null if using DevRandomprotected intstatic final StringFields inherited from class gnu.crypto.prng.BasePRNGStandalone
buffer, initialised, name, ndx -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidaddRandomByte(byte b) Supplement, or possibly replace, the random state of this PRNG with a random byte.voidaddRandomBytes(byte[] buf, int offset, int length) Supplement, or possibly replace, the random state of this PRNG with a sequence of new random bytes.voidUnused, see AsyncFortunaStandalonevoidseed(byte[] val) Unused, see AsyncFortunaStandalonevoidMethods inherited from class gnu.crypto.prng.BasePRNGStandalone
addRandomBytes, clone, init, isInitialised, name, nextByte, nextBytes, nextBytes
-
Field Details
-
NUM_POOLS
static final int NUM_POOLS- See Also:
-
MIN_POOL_SIZE
static final int MIN_POOL_SIZE- See Also:
-
generator
-
pools
null if using DevRandom -
lastReseed
protected long lastReseed -
pool0Count
protected int pool0Count -
reseedCount
protected int reseedCount -
SEED
- See Also:
-
-
Constructor Details
-
FortunaStandalone
public FortunaStandalone() -
FortunaStandalone
public FortunaStandalone(boolean useDevRandom) - Since:
- 0.9.58
-
-
Method Details
-
seed
public void seed(byte[] val) Unused, see AsyncFortunaStandalone -
setup
- Specified by:
setupin classBasePRNGStandalone
-
fillBlock
public void fillBlock()Unused, see AsyncFortunaStandalone- Specified by:
fillBlockin classBasePRNGStandalone
-
addRandomByte
public void addRandomByte(byte b) Description copied from interface: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.- Specified by:
addRandomBytein interfaceIRandomStandalone- Overrides:
addRandomBytein classBasePRNGStandalone- Parameters:
b- The byte to add.
-
addRandomBytes
public void addRandomBytes(byte[] buf, int offset, int length) Description copied from interface: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.- Specified by:
addRandomBytesin interfaceIRandomStandalone- Overrides:
addRandomBytesin classBasePRNGStandalone- Parameters:
buf- 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.
-