Почему UUID / GUID в том формате, в котором они есть?

14

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

GUID чаще всего записывается в тексте как последовательность шестнадцатеричных цифр, разделенных на пять групп, таких как:

3F2504E0-4F89-11D3-9A0C-0305E82C3301

Почему строки GUID / UUID не являются случайными байтами, закодированными с использованием шестнадцатеричной длины X?

Эта текстовая запись содержит следующие поля, разделенные дефисами:

| Hex digits | Description
|-------------------------
| 8            | Data1
| 4            | Data2
| 4            | Data3
| 4            | Initial two bytes from Data4
| 12           | Remaining six bytes from Data4

Существует также несколько версий стандартов UUID .

UUID версии 4 обычно хранятся в виде необработанного массива из 128 битов и обычно отображаются в формате, например:

UUID: ХХХХХХХХХХХЙ-4xxx-yxxx-ХХХХХХХХХХХЙ

Xeoncross
источник
4
Нет, вероятно, это не по соображениям безопасности, цепочка битов имеет одинаковую энтропию с тире или без него. Я думаю, это так, что GUID можно распознать с первого взгляда, вместо того, чтобы идти «вот куча шестнадцатеричных символов, это md5 .. или, возможно, sha1 .. нет, подождите, это может быть ...» и так далее. Кроме того, GUID обычно не являются случайными байтами.
Аналогичный вопрос из формата
Правин

Ответы:

11

От RfC4122 - Пространство имен URN универсального уникального идентификатора (UUID)

Формальное определение строкового представления UUID предоставляется следующим ABNF:

UUID                   = time-low "-" time-mid "-"
                         time-high-and-version "-"
                         clock-seq-and-reserved
                         clock-seq-low "-" node

Таким образом, это просто поля, отличные от исходного времени и UUID на основе MAC . RFC говорит, что это происходит из сетевой вычислительной системы Apollo.

Йорг Миттаг
источник
2

Текстовое представление с тире разделяет четыре поля Guid / UUID на пять групп (последнее поле разделяется после первых двух байтов): кодировка текста Guid

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

Наиболее вероятная причина, по которой поля разделяются (даже если стандарт не упоминает об этом), заключается в удобочитаемости / разделении составных частей.

тюремщик
источник
2
Это говорит нам о том, что формат, информация, которая уже была в вопросе. Это не объясняет почему , о чем спрашивал ОП.
Кит Томпсон
1
Это просто разделение их на поля, вероятно, для лучшей читаемости и идентификации. Возможно последний был разделен далее из-за его длины.
Под ключ
1
логичной. По той же причине телефонные номера, номера кредитных карт и многие другие длинные номера часто распределяются по группам при печати или записи.
jwenting