Как GUID генерируются в SQL Server?

Как генерируются GUID в SQL Server?

Я понимаю, что я должен использовать newid(), но какой алгоритм использует функция? Это хэш времени/даты?

Ответ 1

Алгоритм его создания описан здесь: http://en.wikipedia.org/wiki/Globally_Unique_Identifier

Алгоритм

В указанном OSF алгоритме для генерации новых (V1) GUID, MAC-адрес сетевой карты пользователя используется в качестве базы для последней группы цифр GUID, что означает, например, что документ может быть отслежен назад к компьютеру, который его создал. Это частное отверстие было используется при поиске создателя червя Мелиссы [2]. Большинство из другие цифры основаны на времени при создании GUID. V1 GUID которые содержат MAC-адрес, а время может быть идентифицировано цифрой "1" в первой позиции третьей группы цифр, например {2f1e4fc0-81fd-11da-9156-00036a0f876a}. VID GUID используют алгоритм, который является псевдослучайным числом. Они имеют "4" в такое же положение, например {38a52be4-9352-453e-af97-5c3b448652f0}. Более конкретно, битовая диаграмма "data3" будет равна 0001xxxxxxxxxxxx в первом случае, и 0100xxxxxxxxxxxx во втором. криптоанализа генератора GUID WinAPI показывает, что, поскольку последовательность V4 GUID являются псевдослучайными; учитывая полное знание внутреннего состояния, он можно предсказать предыдущие и последующие значения