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
Serializable in 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.
Modified by jrandom for I2P to use a standalone gnu-crypto SHA256, Cryptix's AES,
to strip out some unnecessary dependencies and increase the buffer size.
Renamed from Fortuna to FortunaStandalone so it doesn't conflict with the
gnu-crypto implementation, which has been imported into GNU/classpath
NOTE: As of 0.8.8, uses the java.security.MessageDigest instead of GNU Sha256Standalone