什麼是 GUID?
GUID(全局唯一識別碼)是一個全球唯一識別碼,可以通過幾種不同的算法生成。本網站上的 GUID 是使用安全隨機數生成器生成的。
UUID 格式
UUID 是 128 位的值,通常表示為 32 個十六進制數字,以 5 組顯示,用連字符分隔,格式為 8-4-4-4-12,總共 36 個字符(32 個字母數字字符和 4 個連字符)。例如:550e8400-e29b-41d4-a716-446655440000
什麼是版本 1 UUID?
版本 1 UUID 是一個通用唯一識別碼,它是通過時間戳和生成該識別碼的計算機的 MAC 地址生成的。此版本包括:
- 60 位時間戳(自 1582 年 10 月 15 日以來的 100 納秒間隔數)
- 12 位時鐘序列
- 48 位節點識別碼(通常是 MAC 地址)
什麼是版本 4 UUID?
版本 4 UUID 是一個通用唯一識別碼,它是使用隨機數生成的。本網站生成的版本 4 UUID 是使用安全隨機數生成器生成的。此版本包括:
- 122 位隨機位
- 6 位版本位(設置為 0100)
- 2 位變體位(設置為 10)
什麼是版本 7 UUID?
版本 7 UUID 是一個通用唯一識別碼,它是使用時間戳、計數器和加密強度高的隨機數生成的。通常,版本 7 UUID 比版本 1 UUID 具有更好的熵(即隨機性)。此版本包括:
- 48 位時間戳(自 Unix 紀元以來的毫秒數)
- 12 位計數器或隨機數據
- 62 位加密安全的隨機數據
- 4 位版本位(設置為 0111)
- 2 位變體位(設置為 10)
版本 7 UUID 特別適用於資料庫主鍵,因為它們保持時間順序,同時提供良好的隨機性。
什麼是 Nil/Empty UUID?
Nil/Empty UUID 是一種特殊形式,包含全部為零的值。其格式為:00000000-0000-0000-0000-000000000000,通常用於表示空或未定義的 UUID。
UUID 版本比較
| 版本 | 生成方法 | 時間有序 | 隱私性 | 使用場景 |
|---|---|---|---|---|
| 版本 1 | 時間戳 + MAC 地址 | 是 | 低 | 分佈式系統,唯一性至關重要 |
| 版本 4 | 隨機 | 否 | 高 | 通用目的,隱私敏感的應用 |
| 版本 7 | 時間戳 + 隨機 | 是 | 高 | 資料庫鍵,可排序的識別碼 |
不同 UUID 版本的優勢
- 版本 1:保證跨空間和時間的唯一性,但會暴露 MAC 地址
- 版本 4:高隨機性和隱私性,但沒有排序性
- 版本 7:結合了時間排序和隨機性的優勢,適用於資料庫
常見使用場景
- 資料庫主鍵:UUID 提供唯一識別碼,無需集中式密鑰生成器
- 分佈式系統:確保跨多個系統的一致識別碼,無需協調
- URL 和資源識別碼:為 Web 資源創建不可猜測的唯一識別碼
- 會話識別碼:Web 應用程序中的安全會話管理
- 事務 ID:跟踪分佈式系統中的操作
安全注意事項
- 版本 1 隱私:可能暴露 MAC 地址,這可能是一個隱私問題
- 版本 4/7 安全:使用加密安全的隨機數生成器以防止可預測性
- 可預測性:在某些應用中,可預測的 UUID 可能是一個安全風險