A free password generator written in Java
Before allowing any characters to be generated, Password Generator will wait until 8 random bytes have been collected from the user's PC, which are then used to augment the random seed of one of the SecureRandom objects.
When generating characters, each SecureRandom contributes an array of 20 bytes of data, the corresponding elements of which are XORed with each other to produce the numbers used to generate password characters.
When the 20 bytes have been exhausted, the app checks the background thread for more random data.
If at least 4 bytes are available, one of the SecureRandoms has its seed augmented with the random data, alternating SecureRandoms each time to increase the randomness of both