UUID v4 產生器:隨機、不可預測、瀏覽器內即時生成
UUID(通用唯一識別碼)v4 版本使用 122 位元的強隨機性,形成 16 個位元組的識別碼,並以 32 個十六進位字元加上四個連字符,表現為標準的 8-4-4-4-12 字串格式。不同於 UUID v7 或 ULID 這類內嵌時間戳的識別碼,v4 不攜帶任何時間資訊,因此排序結果完全隨機——這項特性在需要高熵值與不可猜測性的場景中至關重要,但若用作資料庫主鍵,則可能導致索引樹的頁面分裂與效能下降。本頁面專注於生成 UUID v4,提供數量控制、大小寫切換與連字符開關,所有計算都在您的瀏覽器中完成,無任何資料傳送至伺服器。
格式規則與位元結構
UUID v4 的規範定義在 RFC 4122 中。128 位元總長中,6 個位元固定為版本與變體標記(版本 4 的標記為 0100,變體為 10),其餘 122 位元完全由密碼學強度的亂數填充。因此 UUID v4 的典型字串如 f47ac10b-58cc-4372-a567-0e02b2c3d479,其中第 13 個字元固定為 "4",第 17 個字元固定為 "8"、"9"、"a" 或 "b"(代表變體)。即使關閉連字符,內部位元配置不變;例如 f47ac10b58cc4372a5670e02b2c3d479(32 字元)。
本頁面預設輸出為小寫、含連字符。啟用「大寫」開關後,所有十六進位字母會轉為大寫(如 F47AC10B-58CC-4372-A567-0E02B2C3D479)。「包含連字符」關閉則輸出純 32 字元字串。任何選項變動都會立即觸發整批重新生成,確保輸出始終反映當前的偏好設定。
生成機制與隱私保證
UUID v4 的隨機來源是瀏覽器內建的 crypto.getRandomValues() 方法,該介面由 Web Cryptography API 定義,由作業系統層級的 CSPRNG(密碼學安全偽亂數產生器)提供熵值。不同於使用 Math.random() 的簡單實作,此方法保證非確定性且無法被預測。所有運算完全在本機端執行:您設定的數量(1 至 100 之間)、大小寫與連字符偏好,都僅在您瀏覽器的 JavaScript 引擎中處理,不會透過網路傳輸任何資料。這表示即使離線,或是在無法信任第三方服務的環境中,您仍能安全地批量產生 UUID v4。
碰撞機率與實務考慮
122 位元隨機空間意味著可能的 UUID v4 總數約為 5.3×10^36(2^122)。碰撞機率的估計公式為:若已產生 k 個 UUID,下一個發生碰撞的機率約為 k² / (2×2^122)。以每年產生 10 億個為例,連續 100 年的總數約 10^11,碰撞機率仍低於 10^-15,在實際應用中可視為可以忽略。不過,這項數學保證不因您選擇大寫或小寫而改變——它只是表示法的差異。
正是因為這種純隨機性,UUID v4 不具備時間排序能力。若將大量 v4 值作為叢集索引鍵寫入資料庫,新產生的識別碼可能散落在樹的各處,導致頁面分裂率提高、快取命中率下降。時間排序的替代方案(如 UUID v7 或 ULID)雖然改善了索引效能,卻犧牲了不可猜測性。實務取捨需要您根據應用場景權衡。
操作介面與即時反饋
頁面提供的輸入項很明確:
- 數量:範圍 1 到 100,輸入框只接受此區間的整數,超出範圍則不被接受。
- 大寫:布林切換,預設關閉(false)。
- 包含連字符:布林切換,預設開啟(true)。
每次變更任一選項,系統會立即重新產生整批 UUID v4。狀態訊息會從初始的「Ready.」變為「Generated.」,批量複製後則顯示「Copied all!」。單一 UUID 點擊可直接複製到剪貼簿;「Copy all」按鈕則一次複製所有顯示的識別碼,以換行分隔。
典型應用情境
安全令牌與會話識別碼是 UUID v4 最常見的戰場。由於缺乏時間模式,攻擊者無法從相鄰的令牌推測後續生成值。資料庫中需要外部唯一鍵但不在乎排序的資料表(例如日誌記錄、事件流水號的替代品、匿名化用戶識別碼)也很適合使用 v4。在測試資料生產環節,開發者可快速產生上百個一次性識別碼,填充 mock 資料庫。
注意事項:若您需要程式產生 UUID,應優先選用語言內建的 uuid 套件(如 Python 的 uuid.uuid4()、Node.js 的 uuid 模組),但當您需要臨時、直覺且不寫程式的批量生成時,本頁面的瀏覽器內處理模式提供了最直接的工具。
常見問答
問:UUID v4 與 UUID v7 的主要差異是什麼? 答:v4 完全以亂數產生,v7 則嵌入 Unix 時間戳(毫秒精度)加部分亂數。v4 不可排序但隨機性更強,v7 可大致按時間排序但會洩漏生成時間,且碰撞機率在極高併發時稍高。
問:為什麼關閉連字符後 UUID 變成 32 個字元? 答:連字符僅作為分組可讀性使用,不影響 UUID 的 32 個十六進位數字本體。RFC 4122 的規範表示法含連字符,但許多系統(如檔案名稱、URL 參數)偏好無連字符版本。
問:這個工具一次最多可以產生幾個 UUID? 答:1 至 100 個。這是頁面的輸入限制,超出範圍將無法設定。
問:生成速度與瀏覽器效能有關嗎?
答:生成 100 個 UUID v4 僅需數毫秒,現代瀏覽器皆可勝任。crypto.getRandomValues() 是非阻塞的同步呼叫,但由於批次數量有限,實務上無任何延遲。
問:我可以信任這個工具產生的亂數品質嗎?
答:是的。它使用與 window.crypto.subtle 相同的底層隨機源,通過 FIPS 140 等級驗證的作業系統熵池。全部在本機端進行,無任何外部請求。您也可以打開瀏覽器開發者工具驗證計算過程。
問:產生的 UUID 是否會違反 RFC 4122 的版本與變體標記? 答:不會。頁面實作會強制將第 13 個十六進位字元設為 "4",第 17 個字元設為 "8", "9", "a" 或 "b"(依高位亂數決定),符合標準規定。您可自行檢查輸出格式。