GUID
GUID (англ. Globally Unique Identifier) — статистично унікальний 128-бітний ідентифікатор. Загальна кількість унікальних ключів настільки велика (), що ймовірність того, що у світі будуть незалежно згенеровані два однакових ключі, вкрай мала.
GUID'ом називають деякі реалізації стандарту, що має назву Universally Unique Identifier.
У тексті GUID зазвичай зображується у вигляді рядка з 32 шістнадцяткових цифр, що розбиті на групи дефісами й оточені фігурними дужками: {D12BEB59-6259-4FA1-A733-ADCD523D72DC}
.
Останнє 8-байтове значення при записі часто розбивається дві групи по дві та шість шістнадцяткових цифри відповідно.
Реалізація Microsoft
Структура ідентифікатора має вигляд:
typedef struct _GUID {
DWORD Data1;
WORD Data2;
WORD Data3;
BYTE Data4[8];
} GUID;
UUID-ідентифікатори часто записують у вигляді текстового рядка {G4G3G2G1-G6G5-G8G7-G9G10-G11G12G13G14G15G16}
, де Gx
— значення відповідного байта структури в шістнадцятковому представленні:
Data1 = G4G3G2G1
Data2 = G6G5
Data3 = G8G7
Data4 = G9G10G11G12G13G14G15G16
Наприклад, 22345200-abe8-4f60-90c8-0d43c5f6c0f6
відповідає 128-бітному числу у шістнадцятковому записі 0xF6C0F6C5430DC8904F60ABE822345200
.
Найбільше значення в GUID відповідає десятковому числу 340 282 366 920 938 463 463 374 607 431 768 211 455
.
Microsoft застосовує GUID в OLE, COM і DCOM — як, наприклад, ідентифікатори класів (CLSID), інтерфейсів (IID), бібліотек типів (LIBID). Використання GUID гарантує, що дві (можливо, несумісні) версії одного компонента можуть мати одне і те ж ім'я, але різний ідентифікатор.
Алгоритм, який Microsoft використовувала для генерації GUID, було широко розкритиковано[джерело?]. Зокрема, як основа для створення частини цифр GUID використовувалася MAC-адреса мережевого адаптера, що означало, наприклад, що по даному документу (файлу) MS Word (що отримав при створенні унікальний GUID) можна було визначити комп'ютер, на якому він був створений. Пізніше Microsoft змінила алгоритм, виключивши з нього MAC-адресу.
Використання
- Microsoft Windows використовує ідентифікатори GUID, щоб визначити класи та інтерфейси об'єктів COM. Скрипт може активувати певний клас або об'єкт, не знаючи назви або місця розташування динамічної бібліотеки, яка містить його.
- ActiveX, система для завантаження та встановлення елементів управління у веб-браузері, використовує ідентифікатори GUID для унікальної ідентифікації кожного елемента керування.
- Таблиця розділів GUID від Intel — система для розділення жорстких дисків.
- JT файли використовують розбиття на 4 +2 +2 +8 * 1 байт для подання вузлів у структурі даних та ідентифікаторів сегментів.
- Second Life використовує ідентифікатори GUID для ідентифікації всіх своїх активів.
- Розробники баз даних і адміністратори часто використовують ідентифікатори GUID як первинні ключі для таблиць бази даних, щоб забезпечити унікальність між базами даних.