`

谁能提供个产生GUID的JAVA类

阅读更多

 

有没有谁能给我个产生GUID的java类呢?

谢谢大家!

分享到:
评论
1 楼 neitnaco 2007-11-21  
GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。

import java.net.*;
import java.util.*;
import java.security.*;public class GuidCreator extends Object {

private String seedingString = “”;
private String rawGUID = “”;
private boolean bSecure = false;
private static Random myRand;
private static SecureRandom mySecureRand;

private static String s_id;

public static final int BeforeMD5 = 1;
public static final int AfterMD5 = 2;
public static final int FormatString = 3;

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 GuidCreator() { }

/*
* 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 GuidCreator(boolean secure) {
bSecure = secure;
}

/*
* Method to generate the random GUID
*/
private void getRandomGUID(boolean secure) {
MessageDigest md5 = null;
StringBuffer sbValueBeforeMD5 = new StringBuffer();

try {
md5 = MessageDigest.getInstance(”MD5″);
} catch (NoSuchAlgorithmException e) {
System.out.println(”Error: ” + e);
}

try {
long time = System.currentTimeMillis();
long rand = 0;

if (secure) {
rand = mySecureRand.nextLong();
} else {
rand = myRand.nextLong();
}

// This StringBuffer can be a long as you need; the MD5
// hash will always return 128 bits. You can change
// the seed to include anything you want here.
// You could even stream a file through the MD5 making
// the odds of guessing it at least as great as that
// of guessing the contents of the file!
sbValueBeforeMD5.append(s_id);
sbValueBeforeMD5.append(”:”);
sbValueBeforeMD5.append(Long.toString(time));
sbValueBeforeMD5.append(”:”);
sbValueBeforeMD5.append(Long.toString(rand));

seedingString = sbValueBeforeMD5.toString();
md5.update(seedingString.getBytes());

byte[] array = md5.digest();
StringBuffer sb = new StringBuffer();
for (int j = 0; j < array.length; ++j) {
int b = array[j] & 0xFF;
if (b < 0×10) sb.append(’0′);
sb.append(Integer.toHexString(b));
}

rawGUID = sb.toString();

} catch (Exception e) {
System.out.println(”Error:” + e);
}
}

public String createNewGuid(int nFormatType, boolean secure) {
getRandomGUID(secure);
String sGuid = “”;
if (BeforeMD5 == nFormatType) {
sGuid = this.seedingString;
} else if (AfterMD5 == nFormatType) {
sGuid = this.rawGUID;
} else {
sGuid = this.toString();
}
return sGuid;
}

public String createNewGuid(int nFormatType) {
return this.createNewGuid(nFormatType, this.bSecure);
}

/*
* Convert to the standard format for GUID
* (Useful for SQL Server UniqueIdentifiers, etc.)
* Example: C2FEEEAC-CFCD-11D1-8B05-00600806D9B6
*/
public String toString() {
String raw = rawGUID.toUpperCase();
StringBuffer sb = new StringBuffer();
sb.append(raw.substring(0,);
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();
}
}

/**
* Use Exceple
* public static void main(String args[]) {
* for (int i=0; i< 100; i++) {
* GuidCreator myGUID = new GuidCreator();
* System.out.println(”Seeding String=” + myGUID.createNewGuid(GuidCreator.BeforeMD5));
* System.out.println(”rawGUID=” + myGUID.createNewGuid(GuidCreator.AfterMD5));
* System.out.println(”RandomGUID=” + myGUID.createNewGuid(GuidCreator.FormatString));
* }
* }
*/

相关推荐

    Java的 GUID 类 型

    大家都知道.NET中有GUID 这个类型,保证每次生成的编号唯一,一般用来作为数据库的主键列使用。 Java里也有这个类型,他位于java.util中 是一个静态类UUID。 具体使用方法,详见附件下载。

    java代码生成GUID

    在Java编程语言中,生成全局唯一标识符(GUID,Globally Unique Identifier)通常涉及到使用UUID(Universally Unique Identifier)类。UUID是一个128位的数字,它以一种几乎可以确保全球范围内的唯一性的算法生成。...

    GUID.zip_guid_guid 生成器

    这可能是一个独立的可执行程序,可能是用C#、Java、Python或其他编程语言编写的,用于生成和复制GUID。这个程序可能有简单的用户界面,可能包含一个按钮,用户点击后就能生成新的GUID,并自动将其复制到剪贴板,以便...

    guid.zip_C# guid 算法_GUID 算法_guid 代码

    这意味着在压缩包内的`guid算法`文件很可能是C#源代码文件,里面可能包含了一个或多个自定义`Guid`生成器的类,这些类可能实现了特定的算法版本,或者提供了额外的功能,比如性能优化、保证特定部分的可预测性等。...

    Guid生成器(随机生成工具)

    此外,它还可以作为类的实例标识,确保多线程环境下每个对象的唯一性。在软件部署和激活过程中,Guid也常被用作产品的唯一标识。 Guid生成器的实现通常包括以下步骤: 1. 获取当前时间戳,转换为16进制字符串。 2. ...

    C#获得程序的GUID

    在C#中获取程序的GUID,主要是指获取程序集(Assembly)的GUID,因为每个.NET程序集在编译时都会自动生成一个唯一的GUID,这个信息存储在程序集的元数据中。下面详细介绍如何实现这一操作: 1. **使用AssemblyInfo....

    自动产生GUID,可以用于COM

    GUID,全称Globally Unique Identifier,全球唯一标识符,是一种在分布式系统中用来确保每个对象都有唯一标识的128位数字。在Windows、COM(Component Object Model)、.NET框架以及其他许多技术中,GUID被广泛使用...

    更改GUID的小工具

    在开发过程中,程序员可能会遇到需要修改现有资源的GUID的情况,例如当一个组件或库被复制或重用时,为了避免与其他项目中的相同资源产生冲突,就需要更改其GUID。这个工具为这些操作提供了一个便捷的界面,简化了...

    Guid号生成器,可以生成32位Guid号

    例如,在创建新的数据库记录时,可以直接复制生成的Guid作为新记录的主键,或者在编程时,可以将生成的Guid作为类或对象的实例标识。 使用Guid号生成器的步骤通常如下: 1. 运行guidgen.exe程序。 2. 程序将自动...

    GUID就能获得设备路径

    例如,Disk 类的 GUID 为“53f56307-b6bf-11d0-94f2-00a0c91efb8b”,我们可以在程序中定义一个 DiskClassGuid 变量,并使用它来获取 Disk 类的设备路径。 获取设备路径的代码实现可以分为以下几个步骤: 1. 首先...

    GUID生成工具源码

    在.NET框架中,`System.Guid`类是用于创建和操作GUID的主要接口。`Guid.NewGuid()`方法是生成新GUID的最常用方式。这个方法的内部实现依赖于操作系统提供的服务,保证了在全球范围内的唯一性。在Windows系统中,它...

    全球唯一码生成器(GUID)

    5. 在类中提供一个公共的静态方法,如`generateGUID()`,调用上述实现逻辑并返回生成的GUID字符串。 例如,一个简单的`RandomGUID.java`可能如下所示: ```java import java.util.Random; import java.util....

    guid生成辅助类help类

    guid生成辅助类help类

    100 guid_guid1c_

    标题中的"100 guid_guid1c_"似乎指的是一个与GUID(全局唯一标识符)相关的工具或资源,特别是与"1c"这个特定环境或版本有关。描述中提到的"get guid 1c"进一步证实了这是一个获取或处理1C环境下的GUID的工具。1C...

    数据库插入GUID试验

    这个类提供了`NewGuid()`静态方法,用于生成新的GUID实例。以下是如何在C#中创建并插入到SQL Server的示例: ```csharp using System; using System.Data.SqlClient; // 创建新的GUID Guid newGuidId = Guid....

    GUID生成器 GUID生成小程序

    GUID生成器 GUID生成小程序 快速生成GUID,自动复制到剪贴板。

    生成GUID程序,C#源代码,System.Guid.NewGuid().ToString()全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。

    生成GUID程序,C#源代码,System.Guid.NewGuid().ToString()全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装。在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID。 GUID...

    guid生成工具

    在.NET框架中,`Guid`类提供了一种简单的方式来生成和操作这些标识符。.NET 2.0是Microsoft开发的.NET Framework的一个版本,它包含了对C#、VB.NET等编程语言的支持,以及对CLR(Common Language Runtime)的重大...

    Guid生成器(工具)

    而描述中提到的Guid生成器工具则提供了一个图形化的用户界面,使得非编程人员也能轻松生成Guid,无需了解具体的编程知识。 这个Guid生成器工具可能包含以下功能: 1. **随机生成**: 工具会根据Guid生成算法,快速...

    如何生成guid

    这个标识符的生成过程是通过算法确保每个GUID都是独一无二的,即使在全球范围内同时生成数百万个GUID,也不会出现重复。 生成GUID的方法有很多种,通常包括编程语言内置的库函数或第三方工具。以下是一些常见编程...

Global site tag (gtag.js) - Google Analytics