UUID 生成器
生成符合 RFC 4122 標準的唯一標識符
點選「生成 UUID」開始
什麼是 UUID?
UUID 是 Universally Unique Identifier 的縮寫,代表一種 128 位元識別碼,用於在分散式系統中標記記錄、物件、工作階段、檔案、裝置、訊息等實體。常見文字形式由 8-4-4-4-12 的十六進位分組組成。它的價值在於多個伺服器、客戶端或服務可以各自產生 ID,而不必向中央資料庫索取下一個連續編號。不同 UUID 版本可能基於隨機數、時間資訊或命名空間雜湊產生,因此在隱私、排序、可預測性和碰撞風險上有所差異。UUID 只是識別碼,不能當作權限憑證或秘密令牌使用。
使用方式
產生步驟
- 選擇 UUID 版本(v1、v4 或 Nil)
- 設定產生數量(1-100)
- 選擇輸出大小寫(大寫或小寫)
- 選擇格式(含連字號、無連字號或大括號)
- 點選產生按鈕以建立所需的識別碼
鍵盤快捷鍵
- Ctrl + G產生 UUID
- Ctrl + Shift + C全部複製
識別碼注意事項
- UUID v4 通常是隨機客戶端識別碼的正確選擇;它不編入時間或裝置資訊。
- 請勿將 UUID 用作金鑰。UUID 僅用於識別記錄,無法取代驗證權杖或存取金鑰。
使用場景
技術原理
UUID 是標準格式 8-4-4-4-12 的 128 位元識別碼,共 36 個字元(含 4 個連字號)。128 位元分為:time-low(32 位元)、time-mid(16 位元)、version-and-time-high(16 位元,最高 4 位元為版本號)、variant-and-clock-seq(16 位元,最高 2 至 3 位元為變體)和 node(48 位元)。RFC 4122 定義了五個版本,v1 到 v5。 v1 由 60 位元時間戳(100 奈秒解析度,從 1582 年 10 月 15 日起算)加上 48 位元 MAC 位址加上 14 位元時鐘序列組成。理論上可按生成時間排序,但會洩露機器身分和生成時間。v4 是使用最廣泛的版本:122 位元由加密安全的隨機源填充,並固定版本(4)和變體(10)位元。 碰撞機率是 UUID 設計的核心考量。v4 擁有 122 位元的隨機空間,根據生日悖論,每秒產生十億個 UUID 連續 85 年才能達到 50% 的單次碰撞機率,這在實務上綽綽有餘。新興的 v7 將時間戳放在前面、隨機位元放在後面,平衡了唯一性和時間排序,更適合作為資料庫主鍵。
- UUID v4:122 個隨機位元,固定版本位元 4 和變體位元 10;適用於幾乎所有場景且不洩露隱私
- UUID v1:60 位元時間戳 + 48 位元 MAC + 14 位元時鐘序列;可按時間排序但暴露機器指紋,需謹慎使用
- UUID v7:時間戳在前、隨機位元在後;2024 年的草案標準,專為資料庫主鍵設計
- 碰撞機率:v4 的隨機空間為 2^122,每秒十億個 UUID 連續 85 年才能達到 50% 的單次碰撞機率
- 空 UUID:全零 00000000-0000-0000-0000-000000000000,常用作佔位符或預設值
- 格式變體:除了標準 8-4-4-4-12 外,還有 32 字元無連字號格式、{花括號} 格式和 URN 格式(urn:uuid:...)
範例
UUID v4(隨機)標準格式
550e8400-e29b-41d4-a716-446655440000
版本位(第 13 個 hex 字元): 4 -> v4,隨機
變體位元(第 17 個 hex 字元): 8/9/a/b -> RFC 4122 變體
用途: 資料庫主鍵、請求 ID、資源 ID — 不在意順序時的預設選擇
RFC: RFC 4122 第 4.4 節定義 v4 產生方式UUID v1(時間戳 + MAC)格式
c232ab00-9414-11ec-b909-0242ac120002
版本位: 1 -> v1,基於時間
備註: 產生時的時間戳會編入 time_low;最後 12 個 hex 字元為節點 ID(通常為 MAC)
用途: 需要可排序 ID 或每台主機固定來源時使用,但須注意 MAC 會洩漏主機身分
RFC: RFC 4122 第 4.1 節定義 v1 結構批次產生 5 個 v4 ID
a1b2c3d4-e5f6-4789-a012-3456789abcde
f7e8d9c0-b1a2-43f4-95e6-7d8c9b0a1e2f
3c4d5e6f-7a8b-49c0-9d1e-2f3a4b5c6d7e
8e9f0a1b-2c3d-44e5-bf6a-7b8c9d0e1f2a
5f6a7b8c-9d0e-45f1-a2b3-c4d5e6f7a8b9
備註:每個 ID 皆獨立由 crypto.getRandomValues 取得;依 RFC 4122 附錄 B,2^122 個 ID 的碰撞機率可忽略不計常見問題
什麼是 UUID?
通用唯一識別碼是一個 128 位元的值(RFC 4122/9562),通常以 32 個十六進位字元、按 8-4-4-4-12 格式書寫,例如 550e8400-e29b-41d4-a716-446655440000。不同版本分別編碼時間、亂數或雜湊值,目的是讓不同系統不需要中央協調也能保證唯一。
UUID v1、v4、v7 有什麼差別?
v1 結合主機 MAC 與 100 奈秒時間戳(具有順序性,但會洩漏主機資訊);v4 是純亂數(122 位元亂度,但無順序性);v7(RFC 9562)把 48 位元的 Unix 毫秒時間戳放在高位元、低位元為亂數——既像 v1 一樣可排序,又不會洩漏 MAC。v7 是現代資料庫鍵的預設選擇。
UUID 真的唯一嗎?
從統計學上看,是的。即使每秒產生十億個 v4 UUID,連續 100 年也只有大約 50% 的碰撞機率(生日悖論的上界)。對任何實際系統而言,都可以把 UUID 當作不需協調就唯一。
UUID 是隨機且無法猜測的嗎?
v4 UUID 是隨機的,幾乎無法被猜中(122 位元亂度)。v1 UUID 完全不是隨機的——它直接洩漏主機 MAC 與時間戳,請勿當作安全 token 使用。v7 的時間戳前綴也可預測,只有尾段亂數位元無法猜測。
可以把 UUID 當資料庫主鍵嗎?
可以,但有取捨。隨機的 v4 UUID 會在以主鍵叢集化的資料庫(如 MySQL InnoDB)中造成 B-tree 碎裂,規模一大就會拖慢插入效能;可排序的 v7 UUID 則能避免這個問題。自動遞增整數仍然更小、更快——只有在分散式產生 ID 真的重要時,才該選 UUID。
UUID 是在我的瀏覽器中產生的嗎?
是的。頁面使用 crypto.randomUUID(舊瀏覽器則退而使用 crypto.getRandomValues),這是 Web Crypto API 的一部分。不會傳送任何資料到伺服器,重新整理頁面就能取得新的亂數來源。
為什麼有些 UUID 開頭看起來幾乎一樣?
v1 與 v7 UUID 把時間編碼在前段字元,因此同一毫秒內產生的 UUID 會有相同前綴,只在尾段位元組有差異——這也正是它們天生可排序的原因。v4 UUID 是隨機的,不會出現這種現象。