全局惟一標識符(GUID,Globally Unique Identifier)是一種由算法生成的二進制長度爲128位的數字標識符。GUID主要用於在擁有多個節點、多臺計算機的網絡或系統中。在理想狀況下,任何計算機和計算機集羣都不會生成兩個相同的GUID。GUID 的總數達到了2^128(3.4×10^38)個,因此隨機生成兩個相同GUID的可能性很是小,但並不爲0。GUID一詞有時也專指微軟對UUID標準的實現。
在理想狀況下,任何計算機和計算機集羣都不會生成兩個相同的GUID。隨機生成兩個相同GUID的可能性是很是小的,但並不爲0。因此,用於生成GUID的算法一般都加入了非隨機的參數(如時間),以保證這種重複的狀況不會發生。
在 Windows 平臺上,GUID 普遍應用於微軟的產品中,用於標識如註冊表項、類及接口標識、數據庫、系統目錄等對象。
格式
GUID 的格式爲「xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx」,其中每一個 x 是 0-9 或 a-f 範圍內的一個4位十六進制數。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即爲有效的 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值的問題本質是同樣的。
public static int GetRandomNumber(int min, int max)
{
int rtn = 0;
Random r = new Random();
byte[] buffer = Guid.NewGuid().ToByteArray();
int iSeed = BitConverter.ToInt32(buffer, 0);
r = new Random(iSeed);
rtn = r.Next(min, max + 1);
return rtn;
}
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()+"}");
}
}