JAVA-产生唯一32位GUID

mac2022-06-30  102

import java.net.*; import java.util.*; import java.security.*; import org.apache.log4j.Logger; /** * 產生唯一GUID */ public class RandomGUID extends Object { public String valueBeforeMD5 = ""; public String valueAfterMD5 = ""; private static Random myRand; private static SecureRandom mySecureRand; static Logger logger = Logger.getLogger(RandomGUID.class); static { mySecureRand = new SecureRandom(); long secureInitializer = mySecureRand.nextLong(); myRand = new Random(secureInitializer); } /** * 生成32位GUID码 * @return */ static public String generatorGUID() { RandomGUID myGUID = new RandomGUID(); return myGUID.toString(); } public RandomGUID() { getRandomGUID(false); } public RandomGUID(boolean secure) { getRandomGUID(secure); } private void getRandomGUID(boolean secure) { MessageDigest md5 = null; StringBuffer sbValueBeforeMD5 = new StringBuffer(); try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { logger.error("Error: " + e); } try { InetAddress id = InetAddress.getLocalHost(); long time = System.currentTimeMillis(); long rand = 0; if (secure) { rand = mySecureRand.nextLong(); } else { rand = myRand.nextLong(); } sbValueBeforeMD5.append(id.toString()); 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(); 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 (UnknownHostException e) { logger.error("Error:" + e); } } public String toString() { String raw = valueAfterMD5.toUpperCase(); StringBuffer sb = new StringBuffer(); sb.append(raw.substring(0, 8)); sb.append(raw.substring(8, 12)); sb.append(raw.substring(12, 16)); sb.append(raw.substring(16, 20)); sb.append(raw.substring(20)); return sb.toString(); } /* * test of class */ public static void main(String[] args) { RandomGUID myGUID = new RandomGUID(true); logger.error("Seeding String=" + myGUID.valueBeforeMD5); logger.error("rawGUID=" + myGUID.valueAfterMD5); logger.error("RandomGUID=" + myGUID.toString()); } }

转载于:https://www.cnblogs.com/bilaisheng/p/10211016.html

相关资源:java代码生成GUID
最新回复(0)