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
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com