Гид за кулисами - PullRequest
       18

Гид за кулисами

4 голосов
/ 18 сентября 2008

Мне интересно, что входит в создание GUID. Я не имею в виду то, что используется для создания GUID на определенном языке (NewID () в SQL Server, Guid.NewGuid () в C #), я имею в виду, когда вы вызываете эти методы / функции, что они делают, чтобы сделать GUID

Ответы [ 6 ]

3 голосов
/ 18 сентября 2008

Кроме того, RFC 4122 (на который есть ссылка в статье Википедии) описывает, как должны создаваться GUID.

2 голосов
/ 18 сентября 2008

Детали GUID, включая алгоритм, используемый для их генерации, описаны в wikipedia .

1 голос
/ 18 сентября 2008

Короче говоря, это совсем не сложно. GUID (или UUID) Версия 4 (текущая) является частично случайным числом , простым и простым (122 из 128 битов являются случайными, остальные используются для хранения версии и ревизии). Хитрость в том, что возможные значения этого числа настолько велики, что вероятность попадания составляет для большинства практических целей ноль .

0 голосов
/ 19 августа 2013

Существует пять официальных способов генерации GUID (и, конечно, еще много неофициальных).

  • Версия 1 - это GUID на основе времени, обычно использующий MAC-адреса основной сетевой карты, который используется для вычисления GUID. Обычно это не используется из-за проблем конфиденциальности, но я считаю, что серверы Microsoft SQL Server с 2005 года и позже используют модифицированную версию (утверждают, что это версия 14), чтобы создать последовательный GUID, полезный для идентификаторов в базе данных, чтобы избежать дробления блоки данных (NewSequentialId ()).

  • Версия 2 является версией DCE Security. Я никогда не находил такого рода GUID, но я тоже мало работал с POSIX, и, похоже, существует связь между GUID версии 2 и POSIX.

  • Версия 3 является версией «на основе имени», то есть вы можете взять текст и создать GUID-представление этого, учитывая пространство имен. Версия 3 использует алгоритм хеширования MD5. См. Также версию 5.

  • Версия 4 в основном представляет собой GUID типа случайного числа. Случайное число имеет уровень безопасности, а не только ваш средний генератор случайных чисел. Эта версия обычно используется в современном мире. C # Guid.NewGuid () использует эту версию, согласно документации Microsoft. Также обычная функция для генерации уникального идентификатора в MS SQL Server (NewId ()) генерирует GUID версии 4.

  • Версия 5 аналогична версии 3, но вместо этого использует алгоритм хеширования SHA-3. Проект с расширенным guid C # использует алгоритм версии 5.

Для одной реализации создания GUID я рекомендовал бы взглянуть на расширенный проект guid. Как уже отмечалось, RFC 4122 дает подробное описание того, как работают все пять алгоритмов. Однако нет никаких гарантий, что все реализации верны.

0 голосов
/ 18 сентября 2008

Предупреждаю, что очень многое из того, что вы читаете в Интернете о создании GUID, может быть неверным или, по крайней мере, устаревшим для вашей конкретной платформы.

Однажды я пошагово прошел через кучу кода Windows, чтобы уладить спор о создании GUID в WinXP. К сожалению, оказалось, что я был неправ (то есть я проиграл спор), но так же поступил и Ларри Остерман, поэтому я почувствовал себя немного лучше.

0 голосов
/ 18 сентября 2008

Хеш-функция. Это сложно.

http://en.wikipedia.org/wiki/GUID#Algorithm Знает больше, чем я.

...