So I can find a lot of algorithms for random number generation (blum blum shub) but as far as seed generation goes that is much less documented. Of course a PRNG depends a great deal on a very random seed. How does this algorithm sound for random seed generation, using whirlpool as the hash function? Go easy on me please, this is the first time I tried to design a random seed generating program so if I made any naive (or retarded) errors keep in mind I never said I was a pro ;-) (or mentally competent!) Breakdown: The user is initially asked to randomly hit on their keyboard and hit a button called "Finish Initializing Seed" after they are done. Each time they press a key the microseconds between the key press (and initialization for the first key) are logged and stored as a string (B1, B2, B3, etc). After the user has hit random keys on the keyboard for a while, they hit the "Finish Initializing Seed" button and provided they have hit at least 50 characters, the string of characters they entered is whirlpool hashed, and then the resulting hash has (B1, B2, B3...etc) added to it and this is then also whirlpool hashed to get the initial seed (Z). Breakdown: In this stage the user is presented with a large box in which they are to move their mouse around. They must move the mouse for at least thirty seconds and click the mouse button at least fifty times. Every microsecond, E (first value being Z) + the current X-Y mouse coordinate is hashed with whirlpool to result in a new E. This process continues for the duration of this stage. As the user moves there mouse around the box and clicks, each time they click a value M is generated which is the X-Y coordinates of the mouse when clicked. Each time they pause and then continue to move the mouse the microseconds of the pause are recorded as D. Microseconds between the mouse being clicked (between new M values) are recorded as L. When the user has finished moving the mouse around long enough for their liking, they will click a "Finish Generating Seed" button. Provided they clicked the mouse fifty times and moved it around the screen for thirty seconds, a whirlpool hash value is taken of the whirlpool value of P combined with the whirlpool value of Q to create the random seed. Breakdown: The random seed is split into two parts, the first 64 characters of the whirlpool hash and the second 64 characters. These two values are then converted to binary, and from binary to decimal. These two decimal numbers are tested for primality using the Miller-Rabin primality test, and multiple whirlpool iterations are done (growing exponentially in the number of numbers tested) until two prime numbers are found. Both prime numbers will be 512 bits (1/2 of a whirlpool hash being 64 characters and 64 * 8 being 512). The generated primes will be used to seed (Represent P and Q) a pseudo random number generator such as blum blum shub.