zoukankan      html  css  js  c++  java
  • C# VB6.0 Java C++ GUID 生成

    编辑本段GUID概念

      GUID: 即Globally Unique Identifier(全球唯一标识符) 也称作 UUID(Universally Unique IDentifier) 。 GUID是一个通过特定算法产生的二进制长度为128位的数字标识符,用于指示产品的唯一性。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。

     

      在 Windows 平台上,GUID 广泛应用于微软的产品中,用于标识如注册表项、类及接口标识、数据库、系统目录等对象。

     

    编辑本段GUID格式

      GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个32位十六进制数。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。

     

    编辑本段GUID特点

      ★GUID在空间上和时间上具有唯一性,保证同一时间不同地方产生的数字不同。 ★世界上的任何两台计算机都不会生成重复的 GUID 值。 ★需要GUID的时候,可以完全由算法自动生成,不需要一个权威机构来管理。 ★GUID的长度固定,并且相对而言较短小,非常适合于排序、标识和存储。

     

    编辑本段GUID争议

      由于GUID值产生的潜在弊端已经引起了保密性提倡者的关注。1999年3月,美国联邦商务委员会接到要求,对微软的GUID值使用进行调查。争议主要涉及Office 97和Office 2000文档对GUID值的使用。Office文档,如Word文件或Excel电子数据表,所使用的GUID值对用户是不可见的。但有很多报道宣称,文档的作者是可以通过GUID值的跟踪查到的,即使作者已经采用特殊方法,他们还是可以被追踪到。 为了回应上述问题,微软已经发布了一个Office 97修补版SR2,它禁止了GUID功能的使用,并且还可以将现存文档的GUID去除。

     

      潜在的对Intel处理器序列号滥用的问题与上述GUID值的问题本质是一样的。

     

    编辑本段生成GUID的VB程序

      Option Explicit

     

      Private Type GUID

     

      Data1 As Long

     

      Data2 As Long

     

      Data3 As Long

     

      Data4(8) As Byte

     

      End Type

     

      Private Declare Function CoCreateGuid Lib "ole32.dll" (pguid As GUID) As Long

     

      Private Declare Function StringFromGUID2 Lib "ole32.dll" (rguid As Any, ByVal lpstrClsId As Long, ByVal cbMax As Long) As Long

     

      Private Function GUIDGen() As String '生成GUID

     

      Dim uGUID As GUID

     

      Dim sGUID As String

     

      Dim bGUID() As Byte

     

      Dim lLen As Long

     

      Dim RetVal As Long

     

      lLen = 40

     

      bGUID = String(lLen, 0)

     

      CoCreateGuid uGUID '把结构转换为一个可显示的字符串

     

      RetVal = StringFromGUID2(uGUID, VarPtr(bGUID(0)), lLen)

     

      sGUID = bGUID

     

      If (Asc(Mid$(sGUID, RetVal, 1)) = 0) Then RetVal = RetVal - 1

     

      GUIDGen = Left$(sGUID, RetVal)

     

      End Function

     

    编辑本段生成GUID的C++程序

      #include <objbase.h>

     

      #include <stdio.h>

     

      //--生成GUID

     

      const char* newGUID()

     

      {

     

      static char buf[64] = {0};

     

      GUID guid;

     

      if (S_OK == ::CoCreateGuid(&guid))

     

      {

     

      _snprintf(buf, sizeof(buf)

     

      , "{%08X-%04X-%04x-%02X%02X-%02X%02X%02X%02X%02X%02X}"

     

      , guid.Data1

     

      , guid.Data2

     

      , guid.Data3

     

      , guid.Data4[0], guid.Data4[1]

     

      , guid.Data4[2], guid.Data4[3], guid.Data4[4], guid.Data4[5]

     

      , guid.Data4[6], guid.Data4[7]

     

      );

     

      }

     

      return (const char*)buf;

     

      }

     

      int main(int argc, char* argv[])

     

      {

     

      //--COM

     

      CoInitialize(NULL);

     

      printf(newGUID());

     

      printf("\n");

     

      //--COM

     

      CoUninitialize();

     

      return 0;

     

      }

     

    编辑本段生成GUID的C#程序

      using System;

     

      namespace GUID测试

     

      {

     

      class Program

     

      {

     

      static void Main(string[] args)

     

      {

     

      Console.WriteLine(System.Guid.NewGuid());

     

      Console.ReadKey();

     

      }

     

      }

     

      }

     

    编辑本段生成GUID的Java程序

      import java.util.UUID;

     

      public class guid {

     

      /**

     

      * @param args

     

      */

     

      public static void main(String[] args) {

     

      // TODO Auto-generated method stub

     

      UUID uuid = UUID.randomUUID();

     

      System.out.println(".{"+uuid.toString()+"}");

     

      }

     

      }

     
    摘自网上,用于备查
  • 相关阅读:
    hiho47 : 拓扑排序·一
    Excel 曝Power Query安全漏洞
    分布式系统技术:存储之数据库
    队列应用
    20155239《Java程序设计》实验一(Java开发环境的熟悉)实验报告
    打印Java main方法执行的命令参数代码
    nothing to commit, working tree clean Remote "origin" does not support the LFS locking API. Consider disabling it with:
    异步
    字节跳动杨震原:A/B测试不是万能的,但不会一定不行
    集成显卡 独显
  • 原文地址:https://www.cnblogs.com/wuyifu/p/2765698.html
Copyright © 2011-2022 走看看