code: private void getRandomGUID(boolean secure) {
          MessageDigest md5 = null;
          StringBuilder sbValueBeforeMD5 = new StringBuilder();
  
          try {
              md5 = MessageDigest.getInstance("MD5");
          } catch (NoSuchAlgorithmException e) {
              System.out.println("Error: " + e);
          }
  
          try {
              long time = System.currentTimeMillis();
              long rand;
  
              if (secure) {
                  rand = mySecureRand.nextLong();
              } else {
                  rand = myRand.nextLong();
              }
  
              // This StringBuffer can be a long as you need; the MD5
              // hash will always return 128 bits.  You can change
              // the seed to include anything you want here.
              // You could even stream a file through the MD5 making
              // the odds of guessing it at least as great as that
              // of guessing the contents of the file!
              sbValueBeforeMD5.append(s_id);
              sbValueBeforeMD5.append(":");
              sbValueBeforeMD5.append(Long.toString(time));
              sbValueBeforeMD5.append(":");
              sbValueBeforeMD5.append(Long.toString(rand));
  
              valueBeforeMD5 = sbValueBeforeMD5.toString();
              md5.update(valueBeforeMD5.getBytes());
  
              byte[] array = md5.digest();
              StringBuilder sb = new StringBuilder();
              for (int j = 0; j < array.length; ++j) {
                  int b = array[j] & 0xFF;
                  if (b < 0x10) sb.append('0');
                  sb.append(Integer.toHexString(b));
              }
  
              valueAfterMD5 = sb.toString();
  
          } catch (Exception e) {
              System.out.println("Error:" + e);
          }
      }
docs: /*
  Method to generate the random GUID