[Win32] Нормально ли использовать функцию RPC API UuidCreate для создания GUID'ов?05.04.07 14:03 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 05.04.07 14:04 Количество правок: 1
---
Вопрос: почему первая цифра в третьей группе всегда равна 4, GUID'ы вроде как должны быть чем случайнее, тем лучше?
Заранее всем огромное спасибо за ответы.
Не совсем. GUID состоит из нескольких полей и некоторые из...05.04.07 15:06 Автор: tatar_0x4e Статус: Member Отредактировано 05.04.07 15:07 Количество правок: 2
> Вопрос: почему первая цифра в третьей группе всегда равна > 4, GUID'ы вроде как должны быть чем случайнее, тем лучше? > Заранее всем огромное спасибо за ответы.
Не совсем. GUID состоит из нескольких полей и некоторые из них отнюдь не случайны. Насколько я знаю есть несколько алгоритмов для генерации UUID и если в твоем случае используется что-то типа
http://www.itu.int/ITU-T/studygroups/com17/oid/X.667-E.pdf то это поле означает версию GUID:
1 The time-based version specified in this Recommendation
2 Reserved for DCE Security version, with embedded POSIX UUIDs
3 The name-based version specified in this Recommendation
4 The random-number-based version specified in this <<<<<<<<<<<<<<<<<<-------
5 The name-based version specified in this Recommendation
Что-то где-то опять кривит M$... Как-то всё-таки странно предлагать использовать для генерации GUID RPCшный uuid. Ну да ладно.05.04.07 15:28 Автор: HandleX <Александр М.> Статус: The Elderman
Во-первых "The term GUID usually refers to Microsoft's implementation of the Universally Unique Identifier (UUID) standard". Так что ничего странного.
Во-вторых "The OSF-specified algorithm used by Microsoft for generating new GUIDs has been widely criticized. In these (V1) GUIDs, the user's network card MAC address is used as a base for the last group of GUID digits, which means, for example, that a document can be tracked back to the computer that created it. This privacy hole was used when locating the creator of the Melissa worm. Most of the other digits are based on the time while generating the GUID.
V1 GUIDs which contain a MAC address and time can be identified by the digit "1" in the first position of the third group of digits, for example {2f1e4fc0-81fd-11da-9156-00036a0f876a}. GUIDs using the later algorithm, which is mostly a random number, have a "4" in the same position, for example {38a52be4-9352-453e-af97-5c3b448652f0}. More specifically, the 'data3' bit pattern would be 0001xxxxxxxxxxxx in the first case, and 0100xxxxxxxxxxxx in the second."
Короче, использовать сгенеренные тобой гуиды в вирусах нельзя.
У него V4 так что все в порядке.05.04.07 19:25 Автор: tatar_0x4e Статус: Member
> Похоже, это у них традиция. Для COM есть еще такая > CoCreateGuid, но она тоже вызывает UuidCreate AFAIK :)
Поставляется (в бинарном виде) в том числе в составе DDK/WDK
Для генерации GUID-ов используется все та же UuidCreate
Но вообще не вижу ничего странного. Ну нужен глобально уникальный идентификатор, почему бы не использовать в качестве оного универсальный уникальный идентификатор, стандартизированный и обладающий всеми необходимыми свойствами.
Подводя итог: создавая механизм репликации сложных объектов древовидной структуры, можно ли надеяться на то, что UuidCreate _никогда_ не выдаст 2 одинаковых GUID по крайней мере за время моей жизни? :)05.04.07 17:12 Автор: HandleX <Александр М.> Статус: The Elderman Отредактировано 05.04.07 17:12 Количество правок: 1