Українська

Інструменти розробника · UUID генератор

GUID проти UUID: брекети Microsoft, байт замовлення та вибірка

· Підземелля

Опубліковано ToolAcre · Редакція журналу

Увійти криптографія веб-сайт

Натюрморт 16 bytes Надано в RFC Замовити і GUID порядок структури, що показує які байти
Головна ToolAcre векторна ілюстрація

GUID Ім’я Microsoft для UUID, але брекети, верхній і байтовий порядок може зробити той же ідентифікатор відрізняється по всій платформах. Цей пост пояснює кожну різницю і як безпечно порівняти.

Ідентифікатор, який не відповідає по всій системі — .NET Сервіс та Java сервіс не погоджуються на один запис

А .NET Сервіс генерує GUID і надішлемо її на Java сервіс, який намагається відповідати вартості UUID з PostgreSQL. Порівняти рядки не вдалося, і системний звіт, що ідентифікатори не відповідають, хоча всі три послуги працюють з тим же принципом 16 bytes. Відмінності, здавалося б, косметичні - брекети, обмотування, байтове замовлення -але вони викликають порівняння рядків, щоб не вдалося і плутати точки інтеграції, які не нормалізують на межі. GUID Microsoft термінологія для чого RFC 9562 Дзвінки UUID: до 128-bit ідентифікатор з тим самим макетом біту. Два імена відносяться до тієї ж фундаментальної структури, але уявлення відрізняється способами, які зловживають розробниками. Розуміння, де плутанина запобіжує інтеграцію помилок.

GUID є UUID — поділ 128-бітний формат і де різниця нумерації з'явилася

GUID стенди для Globally Unique Identifier і Globally Unique Identifier і є ім'ям Microsoft використовує для чого RFC стандарти називають UUID. У 128-розмітка і версія/variant система ідентична. RFC 4122 і RFC 9562 вказати UUID формат і значення; Microsoft реалізує їх і використовує термін GUID. Різниця номіналів історична: Microsoft GUID перед УВІСами були стандартизовані IETF, і термінологія Microsoft застрягає в межах .NET екосистема. На рівні біт, GUID і UUID повністю мінливі. На рівні форматування вони відрізняються презентацією: .NET код часто пише GUIDs з брекетами і літерами верхнього профілю, при цьому RFC канонічні UUIDs використовують нижню клітку і без брекетів.

Кронштейни та верхівки — реєстр {XXXXXXXX-...} формувати і як нормалізувати його

Р UUID в канонічному RFC форма письмова як вісім, чотири, чотири, і дванадцяти нижчих шестигранних символів, відокремлених гіфенами: 550e8400-e29b-41d4-a716-446655440000. А .NET GUID зазвичай відображається з брекетами та верхнім регістром: {550E8400-E29B-41Д4-A716-446655440000й Брекети приходять з Windows Registry формат; верхній регістр є конвенцією відображення. Обидві форми представляють ідентичність 128 bits. Для узгодження GUID від .NET проти UUID від PostgreSQL, смужити брекети і нормалізувати обшивку, потім порівняти рядки. ToolAcre добре сформована перевірка приймає канонічну форму і автоматично видаляє брекети. Нормалізація – незначна текстова трансформація, яка зберігає всі значення.

Змішані-ендіанське байтове замовлення — як перші три поля зберігаються малокінцеві в GUID структура і чому Guid.ToByteArray відрізняється від RFC замовити

Небезпечна різниця між GUID і UUID - замовити RFC 9562 визначає, що перші три поля (8, 4й 4 шестигранних груп) зберігаються у великому-ендіані (мережі) порядку байтів. .NET Гоїдна структура зберігає перші три поля в малокінечному: байти реверсуються перед написанням на зберігання. Те ж 16 bytes, при написанні .NET Guid.ToByteArray() і переклад RFC-компліантний код, виготовляючи абсолютно різні текстові представництва. Р UUID 550e8400-e29b-41d4-a716-446655440000 в RFC byte замовлення зберігаються в якості байтів 55 0р 84 00 9Б 41 до4 16 44 66 55 44 00 00.

The Legacy Microsoft варіант — що c або d у першому символі четвертої групи

Крім того, щоб зробити замовлення, Legacy Microsoft ідентифікатори іноді використовують нестандартне поле для варіантів. Де придбати RFC 9562 визначає, що перший символ четвертої групи повинен бути 8, 9, a, або b, legacy Microsoft GUIDs може використовуватися c, d, e або f. Це все ще діє UUIDs, але вони відповідають варіанту спадщини, який предатує RFC стандартизація. Якщо ви зіткнулися з GUID з c або d в четвертій групі перший символ, у вас є дійсний 128-бітне значення, яке не відповідає RFC варіанти біт. Сучасна .NET генерує RFC-compliant GUIDs, тому нові ідентифікатори не повинні експонувати це питання. Найменше, але важливо розпізнати.

Приклад роботи — той же 16 bytes Надано в RFC Замовити і GUID-структурне замовлення, що показує саме те, які символи ковтки

Зайдіть UUID 550e8400-e29b-41d4-a716-446655440000 і конвертувати його в .NET GUID byte масивна форма з використанням малокінечних конвенцій. У RFC замовлення, байти: перше поле (550e8400) рівні 55 0р 84 00, другий поле (e29b) дорівнює e2 9b, третій поле (41d4) рівні 41 d4, четвертий і п'ятий рівні a7 16 44 66 55 44 00 00. У .NET малокінець: перше поле стає 00 84 0р 55, другий стає 9b e2, третій стає d4 41, і решта залишаються у великому Повний масив байтів 00 84 0р 55 9б e2 д4 41 а7 16 44 66 55 44 00 00. Якщо система Java зчитуває ці байти, які очікують RFC замовлення, інтерпретує їх як 00840e55-9be2-d441-a716-446655440000.

Що це не криється — SQL Статус на сервери NEWSEQUENTIALID і замовлення, які є предметом зберігання самостійно

SQL Статус на сервери NEWSEQUENTIALID Функціональна поведінка та його специфічні ідентифікатори, що замовляє властивості, є шаром зберігання та предметами бази даних. Ця публікація фокусується на форматі та байтах на рівні додатків та серіалізації. Глибока база даних специфіка UUID З питань обробки та байтів найкраще звертаються в документацію на конкретну платформу бази даних. Різні системи баз даних мають різні підходи та підходи UUID зберігання, індексування, сортування та рідна підтримка. Декілька баз даних автоматично виявляє версію та маршрутні біти, а інші вимагають явного типу декларацій та виконання замовлення на межі між системами та зберіганням.

Поруч: нормаліз на кордоні — ToolAcre перевірити приймає канонічну форму, яка є формою стандартизації при обміні ID

Нормалізувати на межі, коли ідентифікатори перетинають .NET/non-.NET системний крайовий. Роздягання брекетів, нормалізувати кешування послідовно, і шляхомte-swap перших трьох полів, якщо байти приходять з .NET Guid.ToByteArray(). Канонічний RFC форма є довідковим стандартом: вісім, чотири, чотири, чотири та дванадцяти нижчих шестигранних персонажів з гіфенами, без брекетів, big-endian byte замовлення. При обміні з .NET системи, погоджуються на нормалізовану форму та застосовуються перетворення прямо в коді інтеграції. Обов'язкове оформлення документів та тестові перетворення. Основні основні схожості між GUID і UUID Найпопулярніші 128 bits ідентичні.