package fops.presentation;
import java.io.IOException;import java.net.InetAddress;import java.net.UnknownHostException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.util.Random;
import com.lutris.appserver.server.httpPresentation.HttpPresentation;import com.lutris.appserver.server.httpPresentation.HttpPresentationComms;import com.lutris.appserver.server.httpPresentation.HttpPresentationException;
public class guid implements HttpPresentation {
public String valueBeforeMD5 = ""; public String valueAfterMD5 = ""; private static Random myRand; private static SecureRandom mySecureRand;
private static String s_id; private static final int PAD_BELOW = 0x10; private static final int TWO_BYTES = 0xFF;
static { mySecureRand = new SecureRandom(); long secureInitializer = mySecureRand.nextLong(); myRand = new Random(secureInitializer); try { s_id = InetAddress.getLocalHost().toString(); } catch (UnknownHostException e) { e.printStackTrace(); }
}
public guid() { getRandomGUID(false); }
public guid(boolean secure) { getRandomGUID(secure); }
private void getRandomGUID(boolean secure) { MessageDigest md5 = null; StringBuffer sbValueBeforeMD5 = new StringBuffer(128);
try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { // logger.error("Error: " + e); }
try { long time = System.currentTimeMillis(); long rand = 0;
if (secure) { rand = mySecureRand.nextLong(); } else { rand = myRand.nextLong(); } 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(); StringBuffer sb = new StringBuffer(32); for (int j = 0; j < array.length; ++j) { int b = array[j] & TWO_BYTES; if (b < PAD_BELOW) sb.append('0'); sb.append(Integer.toHexString(b)); }
valueAfterMD5 = sb.toString();
} catch (Exception e) { // logger.error("Error:" + e); } }
public String toString() { String raw = valueAfterMD5.toUpperCase(); StringBuffer sb = new StringBuffer(64); sb.append(raw.substring(0, 8)); sb.append("-"); sb.append(raw.substring(8, 12)); sb.append("-"); sb.append(raw.substring(12, 16)); sb.append("-"); sb.append(raw.substring(16, 20)); sb.append("-"); sb.append(raw.substring(20));
return sb.toString(); }
public void run(HttpPresentationComms comms) throws HttpPresentationException, IOException { guid myGUID = new guid(); // System.out.println("Seeding String=" + myGUID.valueBeforeMD5); // System.out.println("rawGUID=" + myGUID.valueAfterMD5);"RandomGUID=" System.out.println( myGUID.toString()); }
}
1.5版本以后加入了java.util.uuid;
直接这样好了
UUID uuid = UUID.randomUUID();System.out.println("{"+uuid.toString()+"}");