UUID/GUID 介紹和使用 C# 產生 GUID 示範

UUID 是什麼

UUID (Universally Unique Identifier) 是通用唯一辨識碼的縮寫,是用於辨識資訊的 128 位元編碼,有不同的版本,主要用途有作為資料庫主鍵、快取(Cache)的內容區分、或是其他需要用作唯一內容的地方。

UUID 共有五個版本,各版本的比較如下:
版本 產生方式 安全性
1 依據時間和 MAC address 較低
2 依照時間和 IP 較低
3 使用命名空間和名子( MD5 或 SHA-1)
4 完全隨機產生
5 使用命名空間和名子 (SHA-1)

區分方式

由上到下是版本 1 ~ 5:
    
xxxxxxxx-xxxx-1xxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-2xxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-3xxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx
xxxxxxxx-xxxx-5xxx-xxxx-xxxxxxxxxxxx
    

GUID 是什麼

GUID (Globally Unique Identifier) 是全域唯一識別碼的縮寫,是由 Microsoft 所建立,依據 UUID 的標準實現。主要的區別是 GUID 沒有版本編碼,也就是每個字都是隨機的(但也有加入時間戳記),並且 GUID 輸出後需要轉換為大寫,而 UUID 輸出時為小寫,不過在大多數情況下都是不區分大小寫的。基本上兩者是同義詞,不會過多的區分。

UUID/GUID 優缺點

優點:
  • 唯一性
  • 不可預測
缺點:
  • 長度過長
  • 不易閱讀、不方便記憶
  • 在版本一可能會洩漏伺服器的 MAC address (也可能是使用雜湊後的較不易洩漏)

C# 產生 GUID 示範

很簡單,且已經內建,只要一行即可產生:
    
Console.WriteLine(Guid.NewGuid());
    

範例輸出:
    
e044dc4b-5685-4abc-8b68-9c6caaeee20e
    


參考資料:
RFC 4122
Github - ietf-wg-uuidrev/rfc4122bis
Wiki - 通用唯一辨識碼
Wiki - 全域唯一識別碼
StackOverflow - Is there any difference between a GUID and a UUID?
Microsoft.Learn - GUID

留言