code: public static Random createRandom(String password)
    {
      if(password == null)
        return null;
  
      byte[] bytes;
  
      try
      {
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        bytes = md.digest(password.getBytes("UTF-8"));
      }
      catch(NoSuchAlgorithmException e)
      {
        // should not happen
        throw new RuntimeException(e);
      }
      catch(UnsupportedEncodingException e)
      {
        // should not happen
        throw new RuntimeException(e);
      }
  
      int len = bytes.length;
  
      // we only take at most 6 bytes => 48 bits
      if(len > 6)
        len = 6;
  
      long seed = 0;
  
      if(len > 0)
      {
        seed = bytes[0];
  
        for(int i = 1; i < len; i++)
        {
          seed <<=  8;
          seed |= bytes[i];
        }
      }
  
      int k = 0;
  
      for(int i = len; i < bytes.length; i++)
      {
        seed ^= (((long) bytes[i]) << (k * 8));
        if(k++ == 5)
          k = 0;
      }
  
      return new Random(seed);
    }
docs: Create a <code>Random</code> object by extracting the seed from the password.