Improving the Performance of a Slow SecureRandom Generator
Java's SecureRandom class is a reliable source for cryptographically secure random numbers, but its performance can be hindered, particularly when utilizing /dev/random on Linux systems. This delay stems from the process of accumulating sufficient entropy for randomness generation.
Solutions to Enhance Performance
1. Utilizing /dev/urandom:
A solution to the performance issue is to switch to /dev/urandom on Linux, which provides a faster alternative. To enable this, set the following system property:
-Djava.security.egd=file:/dev/urandom
2. Workaround for Java 5 and Later (Java Bug 6202721):
The aforementioned /dev/urandom property doesn't work in Java 5 and higher due to a bug. To address this, use the following property instead:
-Djava.security.egd=file:/dev/./urandom
Additional Considerations:
While /dev/urandom is faster than /dev/random, it's important to note that it's slightly less secure. Therefore, evaluate the security requirements of your application before making a decision.
Uncommon Maths and JDK 6:
The article doesn't mention Uncommon Maths as a solution to this problem. Additionally, the performance issue with SecureRandom has been addressed in subsequent versions of JDK, including JDK 6.
The above is the detailed content of How Can I Speed Up Java's SecureRandom Performance?. For more information, please follow other related articles on the PHP Chinese website!