On most Linux systems, /dev/random
is powered from actual entropy gathered by the environment. If your system isn’t delivering a large amount of data from /dev/random
, it likely means that you’re not generating enough environmental randomness to power it.
I’m not sure why you think /dev/urandom
is “slower” or higher quality. It reuses an internal entropy pool to generate pseudorandomness – making it slightly lower quality – but it doesn’t block. Generally, applications that don’t require high-level or long-term cryptography can use /dev/urandom
reliably.
Try waiting a little while then reading from /dev/urandom
again. It’s possible that you’ve exhausted the internal entropy pool reading so much from /dev/random
, breaking both generators – allowing your system to create more entropy should replenish them.
See Wikipedia for more info about /dev/random
and /dev/urandom
.