ToolAct工具行動

UUID 生成器

生成符合 RFC 4122 標準的唯一標識符

生成結果共 0 個

點選「生成 UUID」開始

什麼是 UUID?

UUID 是 Universally Unique Identifier 的縮寫,代表一種 128 位元識別碼,用於在分散式系統中標記記錄、物件、工作階段、檔案、裝置、訊息等實體。常見文字形式由 8-4-4-4-12 的十六進位分組組成。它的價值在於多個伺服器、客戶端或服務可以各自產生 ID,而不必向中央資料庫索取下一個連續編號。不同 UUID 版本可能基於隨機數、時間資訊或命名空間雜湊產生,因此在隱私、排序、可預測性和碰撞風險上有所差異。UUID 只是識別碼,不能當作權限憑證或秘密令牌使用。

使用方式

產生步驟

  1. 選擇 UUID 版本(v1、v4 或 Nil)
  2. 設定產生數量(1-100)
  3. 選擇輸出大小寫(大寫或小寫)
  4. 選擇格式(含連字號、無連字號或大括號)
  5. 點選產生按鈕以建立所需的識別碼

鍵盤快捷鍵

  • Ctrl + G產生 UUID
  • Ctrl + Shift + C全部複製

識別碼注意事項

  • UUID v4 通常是隨機客戶端識別碼的正確選擇;它不編入時間或裝置資訊。
  • 請勿將 UUID 用作金鑰。UUID 僅用於識別記錄,無法取代驗證權杖或存取金鑰。

使用場景

為開發資料批次產生 UUID一次建立 1、5、10、20、50 或 100 個 UUID,然後複製單一值、全部複製或下載為文字檔。UUID v4 在可用時使用 crypto.getRandomValues,亂數種子在瀏覽器本地產生——不會查詢遠端亂數服務或共享熵源,使測試資料在隔離網路上也能重現。
選擇版本和輸出格式產生隨機的 v4 UUID、模擬時間戳風格的 v1 UUID 或空 UUID,然後以含連字號、無連字號或花括號格式化,並選擇小寫或大寫輸出。由於每個識別碼都是從本地亂數種子或時間戳加上內嵌的佔位節點產生的,產生的 ID 可以在測試資料中分享而不會暴露任何環境特定的令牌。
透過鍵盤快捷鍵快速操作頁面載入時會自動產生一個初始 UUID,並支援 Ctrl+G 重新產生和 Ctrl+Shift+C 複製所有當前值。這在測試資料、資料庫種子、請求追蹤和 API 範例中的 ID 產生時很有用。每次產生都會拉取新的本地亂數種子,因此即使在離線數小時的機器上,不同次執行的 ID 也不會衝突。
產生 v1 風格的可排序識別碼選擇 UUID v1 用於需要在資料庫索引中按時間順序排列的 ID。請注意這些 ID 會洩露時間戳和 MAC 資訊,因此不要在建立時間敏感的公開場合暴露它們。頁面使用瀏覽器內的時間戳作為時間欄位,這使測試中的排序正確,但不應依賴它在不同機器之間進行精確的系統時鐘關聯。
在寫入前驗證現有 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 是隨機的,不會出現這種現象。