توليد قيم UUID v4 عشوائية
معرّف UUID من الإصدار 4 قيمة بطول 128 بتًا، منها 122 بتًا مأخوذة من مصدر عشوائي آمن تشفيريًا. أما البتات الست الباقية فتحدد الإصدار ونوع RFC، ولهذا تبدأ المجموعة الثالثة في كل UUID v4 بالرقم 4.
مثال محلول
- بايتات الإدخال العشوائية
- 9d 41 7c 02 e8 5b 13 f6 2a 7e c1 94 06 d3 b8 5f
- النتيجة
- 9d417c02-e85b-43f6-aa7e-c19406d3b85f
| عدد معرّفات UUID المولّدة | احتمال حدوث تكرار واحد على الأقل |
|---|---|
| 10⁶ | ≈ 9.4 × 10⁻²⁶ |
| 10⁹ | ≈ 9.4 × 10⁻²⁰ |
| 10¹² | ≈ 9.4 × 10⁻¹⁴ |
| 10¹⁵ | ≈ 9.4 × 10⁻⁸ |
عدد معرّفات UUID اللازم لاحتمال تكرار بنسبة 50%: ≈ 2.71 × 10¹⁸
طريقة العمل
- يملأ المولّد 16 بايتًا ببيانات عشوائية آمنة، ثم يضبط النصف العلوي من البايت 6 على 4 (الإصدار) والبتين العلويين من البايت 8 على 10 (النوع). لذلك تبدأ المجموعة الثالثة بـ 4 والرابعة بـ 8 أو 9 أو a أو b.
- مع وجود 2¹²² قيمة ممكنة، تعطي تقريبية مسألة عيد الميلاد p ≈ 1 − e^(−n²/2¹²³) احتمال أن تحتوي n من معرّفات UUID العشوائية على تكرار واحد على الأقل.
- لا يكشف UUID v4 أي طابع زمني أو معلومات عن الجهاز. استخدمه معرّفًا، لا كلمة مرور أو سرًّا للمصادقة.
إنشاء من 1 إلى 100 UUID دفعة واحدة
حول UUIDs
UUID v1: UUIDs مستندة إلى الوقت تتضمن طابعًا زمنيًا وعنوان MAC للكمبيوتر الذي ينشئ UUID. مفيد عندما تحتاج إلى معرفة متى تم إنشاء UUID.
UUID v4: UUIDs يتم إنشاؤها عشوائيًا. هذا هو الإصدار الأكثر استخدامًا ويوفر تفردًا جيدًا مع الحد الأدنى من تسرب المعلومات.
UUID v5: UUIDs مستندة إلى الاسم باستخدام تجزئة SHA-1. بنفس مساحة الاسم والاسم، ستحصل دائمًا على نفس UUID. مفيد لإنشاء UUID حتمي.