diff --git a/core/java/src/net/i2p/util/RandomSource.java b/core/java/src/net/i2p/util/RandomSource.java
index 4e0fe26560d7cf536069230f0e584bdd7215f49d..408af8f7ba439f8ce43fabb1348f51e2fed914d0 100644
--- a/core/java/src/net/i2p/util/RandomSource.java
+++ b/core/java/src/net/i2p/util/RandomSource.java
@@ -13,6 +13,7 @@ import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
 import java.security.SecureRandom;
 
 import net.i2p.I2PAppContext;
@@ -170,9 +171,14 @@ public class RandomSource extends SecureRandom implements EntropyHarvester {
     }
  
     public final boolean initSeed(byte buf[]) {
+        boolean ok = false;
+        try {
+            SecureRandom.getInstance("SHA1PRNG").nextBytes(buf);
+            ok = true;
+        } catch (NoSuchAlgorithmException e) {}
         // why urandom?  because /dev/random blocks, and there are arguments
         // suggesting such blockages are largely meaningless
-        boolean ok = seedFromFile(new File("/dev/urandom"), buf);
+        ok = seedFromFile(new File("/dev/urandom"), buf) || ok;
         // we merge (XOR) in the data from /dev/urandom with our own seedfile
         File localFile = new File(_context.getConfigDir(), SEEDFILE);
         ok = seedFromFile(localFile, buf) || ok;