什麼是 UUID?
UUID(通用唯一識別碼,Universally Unique Identifier),也常被稱為 GUID,是一組 128 位元的數值,用來在電腦系統中為資料賦予獨一無二的標記,而且不需要任何中央機構來統一發號。這個工具產生的是 第 4 版(version 4)UUID,幾乎完全由隨機亂數組成。由於其中含有 122 個隨機位元,兩組 UUID 剛好相同的機率小到可以忽略不計,因此實務上可視為全球唯一。這是一套跨平台、與程式語言無關的通用標準(RFC 4122)。
如何使用這個產生器
先選擇要產生幾組 UUID(1 到 50 組),再決定輸出要用小寫或大寫,以及是否要保留標準的連字號。按下計算後即可複製結果。UUID 非常適合用來當作資料庫主鍵、API 請求 ID、檔案名稱、Session Token,以及各種分散式系統的識別碼——尤其是在無法依賴自動遞增編號的情境下,更能派上用場。
格式解析
第 4 版 UUID 由 32 個十六進位數字組成,並以連字號分成五組:8-4-4-4-12,例如 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx。標示為 4 的數字代表版本編號;標示為 y 的數字代表變體(variant),其值必須是 8、9、a 或 b 其中之一。其餘所有的 x 都是隨機產生的十六進位數字。
$$\text{UUID} = \underbrace{\texttt{xxxxxxxx}}_{8}\text{-}\underbrace{\texttt{xxxx}}_{4}\text{-}\underbrace{\texttt{4xxx}}_{4}\text{-}\underbrace{\texttt{Yxxx}}_{4}\text{-}\underbrace{\texttt{xxxxxxxxxxxx}}_{12}\quad\times\,\text{Count}$$
實際範例
假設有一串隨機十六進位字串,例如 3f9a7c1e b204 1d88 9c33 a7f019be24c1。要把它變成合法的 v4 UUID,我們會把第 13 個數字強制設為 4,並把第 17 個數字設成合法的變體數字,結果可能像是 3f9a7c1e-b204-4d88-9c33-a7f019be24c1。可以注意到第二個連字號後面是 4,而第三個連字號後面是 9(一個合法的變體值)。
常見問題
這些 UUID 在密碼學上安全嗎?它們是使用平台的偽隨機亂數來源產生的,作為識別碼用途綽綽有餘;但如果是高安全性的機密(例如密鑰、權杖),建議改用專門的密碼學等級亂數產生器。
兩組 UUID 有可能完全一樣嗎?理論上可能,但機率微乎其微——你得連續好幾年、每秒產生數十億組,才有實際碰撞的可能。
拿掉連字號會改變數值嗎?不會。連字號純粹只是為了方便閱讀,底層的 128 位元完全相同。