程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> ASP編程 >> ASP技巧 >> GUID的介紹以及各種語言生成guid的方法

GUID的介紹以及各種語言生成guid的方法

編輯:ASP技巧
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的ASP程序
 Dim objTypeLib 
 Set objTypeLib = Server.CreateObject("Scriptlet.TypeLib") 
 GUID = Left(CStr(objTypeLib.Guid),38) 
 Set objTypeLib = Nothing 
生成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;
  }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved