`
wencan83
  • 浏览: 42184 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

生成全球唯一32位码

J# 
阅读更多

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地址生成服务器唯一机器码

    MAC地址(Media Access Control Address)是网络硬件设备的物理地址,如网卡、交换机等,它是全球唯一的。利用MAC地址生成的机器码可以作为服务器的身份凭证,确保每个服务器的独立性和可追溯性。 首先,我们来了解...

    java生成UUID通用唯一识别码.docx

    例如,`UUID.randomUUID()`方法可以生成一个基于时间的UUID,这是最常见的类型,它结合了当前时间戳、随机数和机器标识,确保生成的ID在全球范围内是唯一的。 以下是一个简单的Java程序示例,展示了如何生成和使用...

    全球唯一码生成器(GUID)

    标题中的“全球唯一码生成器(GUID)”指的是在信息技术领域广泛应用的一种全局唯一标识符(Globally Unique Identifier)。GUID是一种由算法生成的128位数字,保证在全局范围内的唯一性,常用于数据库键、对象标识...

    Android生成唯一标识符UUID(完全替代IMEI)

    UUID(Universally Unique Identifier)是一种全球唯一的标识符,它是由128位数字组成的。在Android中,我们可以使用Java的`java.util.UUID`类来生成UUID。这个类提供了`randomUUID()`方法,它会生成一个基于当前...

    java生成UUID通用唯一识别码 中文WORD版

    UUID,全称Universally Unique Identifier,是通用唯一识别码的缩写,是一种在不考虑时间空间等外在因素的情况下,能够在全球范围内生成不重复的标识符的技术。在Java中,UUID类提供了生成UUID的能力,这对于分布式...

    GUID全球唯一标识码生成+成品+源码带多线程

    它由128位的数字组成,通常用32个十六进制数字表示,形如“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”。在IT行业中,GUID被广泛应用在各种系统和程序中,用于创建独一无二的标识,例如数据库记录、计算机网络中的节点...

    EAN 13条形码生成器.zip

    EAN 13条形码是一种广泛应用于全球零售业的标准条形码系统,它由13位数字组成,用于唯一标识商品。这个压缩包“EAN 13条形码生成器.zip”包含了一个演示程序,该程序专门设计用于生成符合EAN 13标准的条形码。 在...

    分布式架构系统生成全局唯一序列号的一些思路对比分析

    UUID是通用唯一识别码,按照特定规则生成的一串128位的数字,通常以16进制表示。UUID的生成算法有多种,如MD5、SHA-1、随机数等,确保了其全球范围内的唯一性。但UUID字符串较长,可能在数据库存储和网络传输中造成...

    IMEI效验位生成器

    IMEI(International Mobile Equipment Identity,国际移动设备身份码)是全球唯一的移动设备识别码,主要用于区分和追踪手机等移动通信设备。它通常由15位数字组成,每一部分都有特定的含义,其中第15位是效验位,...

    IMEI Check IMEI随机生成 IMEI连续号码生成

    IMEI(International Mobile Equipment Identity,国际移动设备身份码)是全球唯一的移动设备识别码,主要用于标识手机等移动通信设备。IMEI通常由15位数字组成,分为几个部分,包括制造商代码、型号核准代码、...

    OPPOVIVO专用真实参数串码生成器

    这些识别码在移动设备中扮演着至关重要的角色,它们是设备在全球范围内的唯一标识符,用于设备的追踪、认证和管理。 IMEI,全称为国际移动设备识别码,是每个GSM(全球系统移动通信)和WCDMA(宽频码分多址)手机的...

    手机IMEI串码批量生成工具

    IMEI(International Mobile Equipment Identity)是手机设备的全球唯一识别码,由15位数字组成,通常用于识别和追踪移动设备。MEID(Mobile Equipment Identifier)则是CDMA网络设备的标识,与IMEI类似,但在CDMA...

    EAN-13条形码生成源码

    EAN-13条形码是一种广泛应用于全球零售业的标准条形码系统,它由13位数字组成,用于唯一标识商品。在本文中,我们将深入探讨EAN-13条形码的结构、生成原理以及如何使用C#编程语言来创建这样的条形码。 EAN-13条形码...

    条形码生成器,,,,

    9. **安全性与验证**:生成的条形码可能包含校验位,以确保数据的准确性和完整性,防止错误扫描。 总的来说,"条形码生成器PortBarcodeV1.0"是一个实用的工具,可以帮助企业和个人高效地创建和管理条形码,提升其...

    IMEI号生成器

    IMEI(International Mobile Equipment Identity,国际移动设备身份码)是全球唯一的手机设备识别码,由15位数字组成,用于区分不同的移动设备。IMEI号生成器是一种软件工具,能够生成符合IMEI号码规则的随机序列,...

    Go-Go语言实现的全球唯一字典排序标识符ULID

    全球唯一字典排序标识符(ULID,Universally Unique Lexicographically Sortable Identifier)是一种用于生成全局唯一且可排序的128位标识符的机制。它由16个字符组成,通常用base32编码表示,使得在文本环境下易于...

    真实IMEI+SN生成器.zip

    IMEI是由GSMA(全球移动通信系统协会)分配的15位数字代码,它包含了制造商代码、型号、序列号以及检查位等信息,确保每部手机在全球范围内都能被唯一识别。SN,即序列号,是设备出厂时由制造商赋予的独一无二的标识...

    批量生成手机IMEI码的软件

    IMEI码,全称为“国际移动设备识别码”(International Mobile Equipment Identity),是全球移动通信系统为每台手机分配的唯一识别号码。它主要用于区分不同的移动设备,便于运营商跟踪和管理移动设备,如进行设备...

    条形码生成软件可有多种格式

    Code-39条形码通常用于内部标签、资产管理,以及不需要全球唯一性的应用。 EAN(欧洲商品编号)是全球广泛使用的零售商品条形码标准,分为EAN-8和EAN-13两种形式。EAN-8适用于小型包装的商品,包含8位数字;EAN-13...

    IMEI码生成器

    IMEI码,全称为“国际移动设备识别码”(International Mobile Equipment Identity),是全球移动通信系统为每一个手机设备分配的唯一标识号码。它主要用于区分不同的移动设备,便于运营商跟踪和管理移动设备,如...

Global site tag (gtag.js) - Google Analytics