Theo tài liệu này , các thuật toán khác nhau được SecureRandom sử dụng theo thứ tự ưu tiên:
- Trên hầu hết các hệ thống * NIX
- Bản địa
- SHA1PRNG
- Khóa bản địa
- NativePRNGNonBlocking
 
- Trên các hệ thống Windows
- SHA1PRNG
- Windows-PRNG
 
Vì bạn đã hỏi về Linux, tôi bỏ qua việc triển khai Windows và cả SunPKCS11 chỉ thực sự có sẵn trên Solaris, trừ khi bạn tự cài đặt nó - và sau đó bạn sẽ không hỏi điều này.
Theo những tài liệu tương tự, những thuật toán này sử dụng là gì
SHA1PRNG
 
Việc gieo hạt ban đầu hiện được thực hiện thông qua sự kết hợp của các thuộc tính hệ thống và thiết bị thu thập entropy java.security.
NativePRNG
nextBytes() sử dụng /dev/urandom
generateSeed()sử dụng/dev/random
NativePRNGBlocking
nextBytes() và generateSeed()sử dụng/dev/random
NativePRNGNonBlocking
nextBytes() và generateSeed()sử dụng/dev/urandom
Điều đó có nghĩa là nếu bạn sử dụng SecureRandom random = new SecureRandom(), nó sẽ đi xuống danh sách đó cho đến khi nó tìm thấy một hoạt động, thường sẽ là NativePRNG. Và điều đó có nghĩa là nó tự tạo hạt giống từ /dev/random(hoặc sử dụng nó nếu bạn tạo rõ ràng một hạt giống), sau đó sử dụng /dev/urandomđể nhận các byte, ints, double, booleans, what-have-yous tiếp theo.  
Vì /dev/randomlà chặn (nó chặn cho đến khi nó có đủ entropy trong nhóm entropy), điều đó có thể cản trở hiệu suất.
Một giải pháp cho điều đó là sử dụng một cái gì đó như đã tạo ra đủ entropy, một giải pháp khác là sử dụng /dev/urandomthay thế. Mặc dù bạn có thể thiết lập điều đó cho toàn bộ jvm, một giải pháp tốt hơn là thực hiện nó cho trường hợp cụ thể này SecureRandombằng cách sử dụng SecureRandom random = SecureRandom.getInstance("NativePRNGNonBlocking"). Lưu ý rằng phương thức đó có thể ném NoSuchAlerskymException nếu NativePRNGNonBlocking, vì vậy hãy chuẩn bị để dự phòng về mặc định.
SecureRandom random;
try {
    random = SecureRandom.getInstance("NativePRNGNonBlocking");
} catch (NoSuchAlgorithmException nsae) {
    random = new SecureRandom();
}
Cũng lưu ý rằng trên các hệ thống * nix khác, /dev/urandomcó thể hoạt động khác đi .
Là /dev/urandomđủ ngẫu nhiên?
Sự khôn ngoan thông thường có nó là chỉ /dev/randomđủ ngẫu nhiên. Tuy nhiên, một số tiếng nói khác nhau. Trong "Cách đúng để sử dụng SecureRandom" và "Huyền thoại về / dev / urandom" , người ta cho rằng điều đó /dev/urandom/cũng tốt như vậy.
Người dùng trên ngăn xếp Bảo mật thông tin đồng ý với điều đó . Về cơ bản, nếu bạn phải hỏi, /dev/urandomtốt cho mục đích của bạn.