Чому 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: xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx


4
Ні, це, мабуть, не з міркувань безпеки, бітстринг має таку ж ентропію з тиреми або без них. Я б подумав, що це так, що GUID можна розпізнати з першого погляду, а не переходити "ось куча шістнадцяткових символів, це md5 .. чи, можливо, sha1 .. ні, чекайте, це може бути ..." тощо. Також GUID зазвичай не є лише випадковими байтами.


Подібне запитання у форматі
Правен

Відповіді:


11

Від RfC4122 - Універсально унікальний ідентифікатор (UUID) URN Іменний простір

Офіційне визначення представлення рядків UUID надається наступним ABNF:

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

Отже, це лише різні поля від початкового часу та UUID на основі MAC . RFC стверджує, що вона походить від обчислювальної системи Apollo Network.


2

Представлення тексту за допомогою тире розділяє чотири поля Guid / UUID на п’ять груп (при цьому останнє поле відокремлюється після перших двох байтів): Encoding Guid Text

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

Найбільш вірогідна причина розділення полів (хоча стандарт не згадує про це) полягає в читанні / розділенні складових частин.


2
Це говорить нам про формат, інформацію, про яку вже йшлося. Це не пояснює, чому саме це запитувала ОП.
Кіт Томпсон

1
Це просто розділення їх на поля, ймовірно, для кращої читабельності та ідентифікації. Можливо, останній був розколотий далі через свою довжину.
під ключ

1
логічний. З тієї ж причини, номери телефонів, номери кредитних карток та багато інших довгих номерів часто розбиваються на групи під час друку або запису.
jwenting
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.