Java GUID
来源:互联网 发布:midi钢琴软件 编辑:程序博客网 时间:2024/06/16 15:39
code example:
public class GUID { 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 block to take care of one time secureRandom seed. It takes a few * seconds to initialize SecureRandom. You might want to consider removing * this static block or replacing it with a "time since first loaded" seed * to reduce this time. This block will run only once per JVM instance. */ static { mySecureRand = new SecureRandom(); long secureInitializer = mySecureRand.nextLong(); myRand = new Random(secureInitializer); try { s_id = InetAddress.getLocalHost().toString(); } catch (UnknownHostException e) { e.printStackTrace(); } } /* * Default constructor. With no specification of security option, this * constructor defaults to lower security, high performance. */ public GUID() { getRandomGUID(false); } /* * Constructor with security option. Setting secure true enables each random * number generated to be cryptographically strong. Secure false defaults to * the standard Random function seeded with a single cryptographically * strong random number. */ public GUID(boolean secure) { getRandomGUID(secure); } /* * Method to generate the random GUID */ private void getRandomGUID(boolean secure) { MessageDigest md5 = null; StringBuffer sbValueBeforeMD5 = new StringBuffer(128); try { md5 = MessageDigest.getInstance("MD5"); } catch (NoSuchAlgorithmException e) { log.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) { log.error("Error:" + e); } } /* * Convert to the standard format for GUID (Useful for SQL Server * UniqueIdentifiers, etc.) Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6 */ 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(); } // Demonstraton and self test of class public static void main(String args[]) { for (int i = 0; i < 100; i++) { GUID myGUID = new GUID(); log.info("Seeding String=" + myGUID.valueBeforeMD5); log.info("rawGUID=" + myGUID.valueAfterMD5); log.info("RandomGUID=" + myGUID.toString()); log.info("----------------------------------------"); } }}
0 0
- Java GUID
- java生成GUID
- java生成GUID代码
- java 如何产生GUID
- Java 产生 GUID / UUID
- Java创建GUID
- Java生成唯一GUID
- Java生成GUID
- 用 Java 生成 GUID
- Java 产生 GUID / UUID
- 用java生成GUID
- Java 产生 UUID / GUID
- java生成GUID与UUID
- java生成GUID与UUID
- 生成GUID的Java程序
- Java生成唯一UUID(GUID)
- Java生成唯一GUID UUID
- Java生成唯一GUID UUID
- C语言程序设计实践-数组初步
- rxjava
- oracle quota
- 润乾报表v4 - 导出txt内容对齐
- Java程序内存分析:使用mat工具分析内存占用
- Java GUID
- AndroidStudio 日常总结
- 3种web会话管理的方式
- iOS App启动流程
- String的不可变性
- 设备类型问题
- 齐次空间的裁剪-为什么不在投影除法后裁剪重要
- 润乾报表v4-怎样实现用存为本地的html离线填报到其他服务器
- iOS10以后的推送