Development Class Java

// Copyright (c) 2003-2009, Jodd Team (jodd.org). All Rights Reserved.
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
/**
 * UUID generator of 32 bytes long values. It is builded from:
 * 

     * 
  1.  (0-7) IPAddress as HEX - 8 bytes
     * 
  2.  (8-19) CurrentTimeMillis() as HEX - Display all 12 bytes
     * 
  3.  (20-23) SecureRandom() as HEX - Keep only 4 significant bytes. Since this is "random" it doesn't really matter how many bytes you keep or eliminate
     * 
  4.  (24-31) System.identityHashCode as Hex - 8 bytes
     * 

 */
public class Uuid32Generator {
  public static String generateUUID() {
    return new Uuid32Generator().generate();
  }
  private static final String ZEROS = "000000000000"; // 12
  public String generate() {
    StringBuilder strRetVal = new StringBuilder();
    String strTemp;
    try {
      // IPAddress segment
      InetAddress addr = InetAddress.getLocalHost();
      byte[] ipaddr = addr.getAddress();
      for (byte anIpaddr : ipaddr) {
        Byte b = new Byte(anIpaddr);
        strTemp = Integer.toHexString(b.intValue() & 0x000000ff);
        strRetVal.append(ZEROS.substring(0, 2 - strTemp.length()));
        strRetVal.append(strTemp);
      }
      strRetVal.append(':');
      // CurrentTimeMillis() segment
      strTemp = Long.toHexString(System.currentTimeMillis());
      strRetVal.append(ZEROS.substring(0, 12 - strTemp.length()));
      strRetVal.append(strTemp).append(':');
      // random segment
      SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
      strTemp = Integer.toHexString(prng.nextInt());
      while (strTemp.length() < 8) {
        strTemp = '0' + strTemp;
      }
      strRetVal.append(strTemp.substring(4)).append(':');
      // IdentityHash() segment
      strTemp = Long.toHexString(System.identityHashCode(this));
      strRetVal.append(ZEROS.substring(0, 8 - strTemp.length()));
      strRetVal.append(strTemp);
    } catch (UnknownHostException uhex) {
      throw new RuntimeException("Unknown host.", uhex);
    } catch (NoSuchAlgorithmException nsaex) {
      throw new RuntimeException("Algorithm 'SHA1PRNG' is unavailiable.", nsaex);
    }
    return strRetVal.toString().toUpperCase();
  }
}