The Rolling Stone Album Guide
- 1 year ago
- 0
- 0
GUID (Globally Unique Identifier) — статистически уникальный 128- битный идентификатор . Его главная особенность — уникальность , которая позволяет создавать расширяемые сервисы и приложения без опасения конфликтов, вызванных совпадением идентификаторов. Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2 128 или 3,4028×10 38 ), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала.
«GUID» называют некоторые реализации стандарта, имеющего название Universally Unique Identifier ( UUID ).
В тексте GUID записывается в виде строки из тридцати двух шестнадцатеричных цифр, разбитой на группы дефисами и опционально окружённой фигурными скобками:
Структура идентификатора:
GUID STRUCT Data1 dd Data2 dw Data3 dw Data4 dw Data5 dp GUID ENDS
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 (2 128 -1).
Microsoft применяет GUID в OLE , COM , DCOM и Windows Runtime — например, в качестве идентификаторов для классов ( CLSID ), интерфейсов ( IID ), параметризуемых интерфейсов ( PIID ), библиотек типов ( LIBID ). Использование GUID гарантирует, что две (возможно, несовместимые) версии одного компонента могут иметь одно и то же имя, но быть отличимыми по GUID.
Алгоритм, который Microsoft использовала для генерации GUID, был широко раскритикован. В частности, в качестве основы для генерации части цифр GUID использовался MAC-адрес сетевого адаптера , что означало, например, что по данному документу MS Word (также получающему при создании свой уникальный GUID) можно было определить компьютер , на котором он был создан. Позже Microsoft изменила алгоритм таким образом, чтобы он не включал в себя MAC-адрес.
Проекция Windows Runtime, общая для всех нативных языков программирования, повторно использует механизмы COM. В Windows Runtime активно используются интерфейсы, параметризуемые типом аргумента, которым не было соответствия в COM. С точки зрения COM такие обобщённые интерфейсы не существуют, существуют только их специализации. Обобщённым интерфейсам вместо IID назначается параметрический PIID, а IID их специализаций вычисляется так, чтобы для одинаковых параметров производились одинаковые IID без какого-либо согласования. Программное вычисление IID специализаций требует знания алгоритма. Долгое время в Microsoft не публиковали алгоритм, и единственным способом для разработчиков трансляторов вычислить его был вызов WinAPI , доступный только на ОС Windows 8 и выше. В 2019м году алгоритм был опубликован.
Генерация GUID следует стандарту UUID версии 5 (SHA-1). UUID пространства имён: 11f47ad5-7b73-42c0-abae-878b1e16adee. Хешируемая строка строится из PIID обобщённого интерфейса и списка типовых параметров, закодированного согласно опубликованной грамматике.
Также GUID — основа Таблицы разделов GUID , замены MBR в EFI .