public class RandomGUIDUtil extends Object {
public String valueBeforeMD5 = "";
public String valueAfterMD5 = "";
private static Random myRand;
private static SecureRandom mySecureRand;
private static String s_id;
/*
* 静态块初始化
*/
static {
mySecureRand = new SecureRandom();
long secureInitializer = mySecureRand.nextLong();
myRand = new Random(secureInitializer);
try {
s_id = InetAddress.getLocalHost().toString();
} catch (UnknownHostException e) {
System.out.println("构造带指定详细消息和嵌入异常!");
}
}
public RandomGUIDUtil() throws Exception {
getRandomGUID(false);
}
public RandomGUIDUtil(boolean secure) throws Exception {
getRandomGUID(secure);
}
/*
* 随机生成GUID
*/
private void getRandomGUID(boolean secure) throws Exception {
MessageDigest md5 = null;
StringBuffer sbValueBeforeMD5 = new StringBuffer();
try {
md5 = MessageDigest.getInstance("MD5");
} catch (NoSuchAlgorithmException e) {
logger.error("初始化MD5出错!");
throw new NoSuchAlgorithmException("初始化MD5出错!");
}
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();
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 (Exception e) {
logger.error("获得MD5加密码出错!");
throw new Exception("初始化MD5出错!");
}
}
/**
* 生成一个GUID串
* @return GUID
* @throws Exception
*/
public static String newGuid() throws Exception{
RandomGUIDUtil rdmGUID = new RandomGUIDUtil();
return rdmGUID.toString();
}
/*
* 生成以主机串号、显卡串号、主板号,以保证唯一性的32位编码
*/
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();
}
}
分享到:
相关推荐
MAC地址(Media Access Control Address)是网络硬件设备的物理地址,如网卡、交换机等,它是全球唯一的。利用MAC地址生成的机器码可以作为服务器的身份凭证,确保每个服务器的独立性和可追溯性。 首先,我们来了解...
例如,`UUID.randomUUID()`方法可以生成一个基于时间的UUID,这是最常见的类型,它结合了当前时间戳、随机数和机器标识,确保生成的ID在全球范围内是唯一的。 以下是一个简单的Java程序示例,展示了如何生成和使用...
标题中的“全球唯一码生成器(GUID)”指的是在信息技术领域广泛应用的一种全局唯一标识符(Globally Unique Identifier)。GUID是一种由算法生成的128位数字,保证在全局范围内的唯一性,常用于数据库键、对象标识...
UUID(Universally Unique Identifier)是一种全球唯一的标识符,它是由128位数字组成的。在Android中,我们可以使用Java的`java.util.UUID`类来生成UUID。这个类提供了`randomUUID()`方法,它会生成一个基于当前...
UUID,全称Universally Unique Identifier,是通用唯一识别码的缩写,是一种在不考虑时间空间等外在因素的情况下,能够在全球范围内生成不重复的标识符的技术。在Java中,UUID类提供了生成UUID的能力,这对于分布式...
它由128位的数字组成,通常用32个十六进制数字表示,形如“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”。在IT行业中,GUID被广泛应用在各种系统和程序中,用于创建独一无二的标识,例如数据库记录、计算机网络中的节点...
EAN 13条形码是一种广泛应用于全球零售业的标准条形码系统,它由13位数字组成,用于唯一标识商品。这个压缩包“EAN 13条形码生成器.zip”包含了一个演示程序,该程序专门设计用于生成符合EAN 13标准的条形码。 在...
UUID是通用唯一识别码,按照特定规则生成的一串128位的数字,通常以16进制表示。UUID的生成算法有多种,如MD5、SHA-1、随机数等,确保了其全球范围内的唯一性。但UUID字符串较长,可能在数据库存储和网络传输中造成...
IMEI(International Mobile Equipment Identity,国际移动设备身份码)是全球唯一的移动设备识别码,主要用于区分和追踪手机等移动通信设备。它通常由15位数字组成,每一部分都有特定的含义,其中第15位是效验位,...
IMEI(International Mobile Equipment Identity,国际移动设备身份码)是全球唯一的移动设备识别码,主要用于标识手机等移动通信设备。IMEI通常由15位数字组成,分为几个部分,包括制造商代码、型号核准代码、...
这些识别码在移动设备中扮演着至关重要的角色,它们是设备在全球范围内的唯一标识符,用于设备的追踪、认证和管理。 IMEI,全称为国际移动设备识别码,是每个GSM(全球系统移动通信)和WCDMA(宽频码分多址)手机的...
IMEI(International Mobile Equipment Identity)是手机设备的全球唯一识别码,由15位数字组成,通常用于识别和追踪移动设备。MEID(Mobile Equipment Identifier)则是CDMA网络设备的标识,与IMEI类似,但在CDMA...
EAN-13条形码是一种广泛应用于全球零售业的标准条形码系统,它由13位数字组成,用于唯一标识商品。在本文中,我们将深入探讨EAN-13条形码的结构、生成原理以及如何使用C#编程语言来创建这样的条形码。 EAN-13条形码...
9. **安全性与验证**:生成的条形码可能包含校验位,以确保数据的准确性和完整性,防止错误扫描。 总的来说,"条形码生成器PortBarcodeV1.0"是一个实用的工具,可以帮助企业和个人高效地创建和管理条形码,提升其...
IMEI(International Mobile Equipment Identity,国际移动设备身份码)是全球唯一的手机设备识别码,由15位数字组成,用于区分不同的移动设备。IMEI号生成器是一种软件工具,能够生成符合IMEI号码规则的随机序列,...
全球唯一字典排序标识符(ULID,Universally Unique Lexicographically Sortable Identifier)是一种用于生成全局唯一且可排序的128位标识符的机制。它由16个字符组成,通常用base32编码表示,使得在文本环境下易于...
IMEI是由GSMA(全球移动通信系统协会)分配的15位数字代码,它包含了制造商代码、型号、序列号以及检查位等信息,确保每部手机在全球范围内都能被唯一识别。SN,即序列号,是设备出厂时由制造商赋予的独一无二的标识...
IMEI码,全称为“国际移动设备识别码”(International Mobile Equipment Identity),是全球移动通信系统为每台手机分配的唯一识别号码。它主要用于区分不同的移动设备,便于运营商跟踪和管理移动设备,如进行设备...
Code-39条形码通常用于内部标签、资产管理,以及不需要全球唯一性的应用。 EAN(欧洲商品编号)是全球广泛使用的零售商品条形码标准,分为EAN-8和EAN-13两种形式。EAN-8适用于小型包装的商品,包含8位数字;EAN-13...
IMEI码,全称为“国际移动设备识别码”(International Mobile Equipment Identity),是全球移动通信系统为每一个手机设备分配的唯一标识号码。它主要用于区分不同的移动设备,便于运营商跟踪和管理移动设备,如...