跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 全域唯一識別碼 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
全域唯一識別碼
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''全域唯一識別碼'''(英語:'''G'''lobally'''U'''nique'''Id'''entifier,縮寫:'''GUID''';發音為 / ˈɡuːɪd / 抑是 / ˈɡwɪd /)是一種由演算法生成的唯一標識,通常表示成三十二个十六進位數字(零-九,A-F)組成的字串,如:{ 二十一 EC 二千空二十三分 AEA 鋪一千空六十九-A 二 DD 鋪八千空二 B 三石空三百空九 D },伊實質上是一个一百二十八位元長的二進位整數。GUID 一个詞有時陣嘛專指微軟嘿 UUID 標準的實現。 GUID 的主要目的是產生完全唯一的數字。佇理想的情形下,任何電腦佮電腦密集攏袂生兩个仝款 GUID。GUID 總數也夠大,達到了兩千一百二十八(三孵四 × 一千空三十八)個,所以隨機生做兩个相仝 GUID 的可能性是足細的,毋過並無替零。所以乎,用佇生成 GUID 的演算法通常攏加入非隨機的參數(如時間), 以保證這種重複的狀況袂發生。(見演算法章節) ==實例== * Windows 作業系統使用 GUID 來標識 COM 物件中的類和介面。一个指令碼會當毋知影 DLL 的位置佮名直接通過 GUID 來啟用其中的類或者是物件。 * 英特爾 GUID 磁碟分割表使用 GUID 來標識硬碟佮分割區。 * 微軟乎 ActiveX 使用 UUID 來標識每一个無仝款的瀏覽器控制項。 ==基本結構== GUID 本質上是一个十六位元組(一百二十八个元)的這个二進位數,上捷看的結構如下: 資料四的位元組序佮 GUID 顯示做文字的結果仝款,若其他三个資料佇小端序的機器(如英特爾 CPU)頂懸著愛先轉換做大端序。 資料四的頭一个位元組的第一孵三个表示所使用的 GUID 變種類型: 資料三上懸的四位元表示版本號佮所使用的演算法。 ==文字編碼== GUID 通常會寫做十六進位數的字串,如: : 三 F 兩千五百空四 E 空七四 F 八十九捧十一 D 三更九 A 零 C 抹三百空五 E 八十二 C 三千三百空一這種文字的表示包括了如下部份: 欲描述表示方法通常囥佇一對大括號內邊,如: : { 三 F 兩千五百空四 E 空七四 F 八十九捧十一 D 三更九 A 零 C 抹三百空五 E 八十二 C 三千三百空一 } 當需要使用閣較少的字元表示 GUID 時,可能可能可以用 Base 六十四抑是 Ascii 八十五編碼。Base 六十四編碼的 GUID 有二十二-二十四字元,如: : 七 QDBkvCA 一 + B 九 K / U 零 vrQx 一 A : 七 QDBkvCA 一 + B 九 K / U 零 vrQx 一 A== Ascii 八十五編碼後是二十字元,如: : 五 : $ Hj : Pf \ 四 RLB 百分之九 kU \ Lj 佇咧 URN 中,GUID 頭一版的號名空間標識是 " uuid ",如: : urn : uuid : 三 F 兩千五百空四 E 空七四 F 八十九捧十一 D 三更九 A 零 C 抹三百空五 E 八十二 C 三千三百空一 ==演算法== 佇咧開放軟體基金會做計算(頭版)GUID 制定的演算法內底,使用者的網卡 MAC 位址予人用於計算 GUID 中上尾一組數字,所以就存在隱私問題,因為任何人攏會當通過檔案包含的 GUID 追溯到上頭建立這个檔案的電腦。這个漏洞捌予人用佇咧揣梅麗莎病毒的製作者的位置。佇其他幾組數字中,大多數是根據生成啦 GUID 的時間決定的。 咱會當過 GUID 中第三組數字的第一位是毋是一來判斷講伊敢是第一版的 GUID 算法生的,比如講 { 二 f 一 e 四 fc 空九八十一 fd-'''一'''一 da 鋪九千一百五十六刣三十六 a 零 f 八百七十六 a }。 第四版的 GUID 使用新的演算法,其產生的數字是一个偽亂數。伊成的 GUID 的第三組數字的第一位是四,如 { 三十八 a 五十二 be 四配九千三百五十二-'''四'''五十三 e-af 九十七孵五 c 三 b 四十四抹八千六百五十二 f 零 }。著 Windows API 中的 GUID 生成器所做密碼分析顯示,因為第四版的 GUID 無影真正隨機的,所以只要知影矣程式內底的全部狀態,就可能預測伊生成的頂一个佮後一个 GUID 的值。. ==序列化演算法== GUID 已經廣泛使用資料庫表格的主鍵。因為主鍵需要用來做索引,所以就產生一个效能問題:做主鍵有夠隨機的時,新的記錄著愛插入去原有的索引中央,毋通干焦排佇最後。 為緩解這个問題並猶原提供有夠的隨機程度以避免 GUID 的重複,人就創造一寡新的演算法來生序列化的 GUID。 二空空二年八月,吉米尼爾森(Jimmy Nilsson)予出頭一種的方法,並講的是「COMB」(combined guid / timestamp,意思講:組合 GUID / 時間抽)。 伊將 GUID 中資料四的最後六位元組用系統時間的最低位替換。經測試,這對隨機性的影響足細的,但是有一个副作用即是其建立的時間會當對 GUID 中輕鬆還原。 自從 Microsoft SQL Server 二千空五版開始,軟軟仔佇咧 Transact-SQL 加入一个新的函式,叫做 NEWSEQUENTIALID ( ),用來生做主鍵增加的 GUID,毋過一旦侍服器重新啟動,其實再一遍生的 GUID 可能顛倒變細(但是猶原是保持唯一)。 這佇真大的程度提懸索引的效能,毋過並袂當保證所生成的 GUID 一直增加。這个函式產生的 GUID 真簡單就會當預測,所以無適合用佇安全目的。 二空空六年,一寡程式的設計師發現,佇咧一寡平台頂的 Oracle 軟體中,SYS \ _ GUID 函式能回序列化的 GUID。但是這實際上是一个 BUG 致使的。. ==參考資料== ==參見== * UUID * Security Identifier ( SID ) * Object identifier ( OID ) * 裝置指紋 ==外部連結== * CLSID Registry Key Information * International Standard " Generation and registration of Universally Unique Identifiers ( UUIDs ) and their use as ASN . 一 Object Identifier components " ( ITU-T Rec . X . 六百六十七 | ISO / IEC 九千八百三十四孵八 , technically compatible with IETF RFC 四千一百二十二 ) * DmaId for InstanceId Values ( DCE Universally Unique IDentifiers , UUIDs ) * Syntax and semantics of the DCE variant of Universal Unique Identifiers ( UUIDs ) * Generate and parse UUIDs ( or GUIDs ) in Java * UUID Generator on the ITU-T website [[分類: 待校正]]
返回到「
全域唯一識別碼
」。