code: public static byte[] randomNodeIdentifier() {
          //Holds the 16 byte MD5 value
          byte[] seed = new byte[UUID_BYTE_LENGTH];
          //Set the initial string buffer capacity
          //Time + Object.hashCode + HostName + Guess of all system properties
          int bufSize = (LONG_CHAR_LEN * 2) + HOSTNAME_MAX_CHAR_LEN + (2 * BUF_PAGE_SZ);
          StringBuffer randInfo = new StringBuffer(bufSize);
          //Add current time
          long time = 0;
          try {
              time = getClockImpl().getUUIDTime();
          } catch (OverClockedException oce) {
              time = System.currentTimeMillis();
          }
          randInfo.append(time);
  
          //Add hostname
          try {
              InetAddress address = InetAddress.getLocalHost();
              randInfo.append(address.getHostName());
          } catch (UnknownHostException ukhe) {
              randInfo.append("Host Unknown");
          }
          //Add something else "random"
          randInfo.append(new Object().hashCode());
  
          //Add system properties
          Collection info = System.getProperties().values();
          Iterator it = info.iterator();
          while (it.hasNext()) {
              randInfo.append(it.next());
          }
          //MD5 Hash code the system information to get a node id.
          seed = DigestUtils.md5(randInfo.toString());
  
          //Return upper 6 bytes of hash
          byte[] raw = new byte[NODE_ID_BYTE_LENGTH];
          System.arraycopy(seed, 0, raw, 0, NODE_ID_BYTE_LENGTH);
  
          //Per draft set multi-cast bit true
          raw[0] |= MULTICAST_BIT_SET;
  
          return raw;
      }
docs: <p>Creates a Random node identifier as described in IEFT UUID URN
  specification.</p>
  
  @return a random node idenfifier based on MD5 of system information.