UltKit

ساخت UUID

UUIDهای تصادفی نسخه 4 را از یک تا صد عدد در هر بار بسازید و به‌صورت فهرست کپی کنید. این شناسه‌ها با مولد تصادفی امن رمزنگاری‌شدهٔ مرورگر شما ساخته می‌شوند و بررسی‌کننده، نسخه و گونهٔ (variant) هر UUID را که وارد کنید نشان می‌دهد.

۰ نویسه · ۰ واژه · ۰ خط

کاملاً در همین زبانهٔ مرورگر اجرا می‌شود. متن شما هرگز آپلود یا ذخیره نمی‌شود.

نسخه‌های UUID

نسخه اولین رقم گروه سوم است؛ نوع (variant) در اولین رقم گروه چهارم کدگذاری می‌شود (8، 9، a یا b برای UUIDهای RFC). مثال‌ها بردارهای آزمون RFC 9562 هستند.

نسخهساخته‌شده ازمثال
v1برچسب زمانی گرگوری + شناسهٔ گره (MAC)c232ab00-9414-11ec-b3c8-9f6bdeced846
v3هش MD5 از فضای نام + نام5df41881-3aed-3515-88a7-2f4a814cf09e
v4122 بیت تصادفی919108f7-52d1-4320-9bac-f847db4148a8
v5هش SHA-1 از فضای نام + نام2ed6657d-e927-568b-95e1-2665a8aea6a2
v6برچسب زمانی v1 با ترتیب جدید تا شناسه‌ها بر اساس زمان مرتب شوند1ec9414c-232a-6b00-b3c8-9f6bdeced846
v7میلی‌ثانیهٔ یونیکس + بیت‌های تصادفی، قابل مرتب‌سازی017f22e2-79b0-7cc3-98c4-dc0c0c07398f
v8ساختار سفارشی تعریف‌شده توسط برنامه2489e9ad-2ee2-8e00-8ec9-32d5f69181c0

UUID چیست و چگونه خوانده می‌شود

UUID (شناسهٔ یکتای جهانی؛ در نرم‌افزارهای مایکروسافت GUID نامیده می‌شود) عددی ۱۲۸ بیتی است که با ۳۲ رقم هگزادسیمال و در گروه‌های 8-4-4-4-12 نوشته می‌شود، مثلاً f47ac10b-58cc-4372-a567-0e02b2c3d479. این قالب در سال 2005 در RFC 4122 استاندارد شد؛ در ماه مه 2024 آن سند جای خود را به RFC 9562 داد که نسخه‌های قبلی را نگه می‌دارد و سه نسخهٔ جدید اضافه می‌کند. دو جایگاه ثابت است: رقم اول گروه سوم نسخه را نشان می‌دهد (عدد 4 در 4372) و رقم اول گروه چهارم واریانت را نشان می‌دهد که برای هر UUID مطابق RFC یکی از 8، 9، a یا b است.

نسخهٔ 4 بقیهٔ 122 بیت را با داده‌ی تصادفی پر می‌کند. این فضا چنان بزرگ است که برای رسیدن به شانس 50% برای یک تکرار باید حدود 2.7 کوینتیلیون (2.7 × 10¹⁸) شناسه بسازید؛ به همین دلیل سیستم‌ها می‌توانند شناسه‌های v4 را روی ماشین‌های مختلف و بدون هماهنگی تولید کنند. این صفحه از crypto.randomUUID و در نبود آن از crypto.getRandomValues استفاده می‌کند و هرگز از Math.random بهره نمی‌برد، چون خروجی آن برای غیرقابل‌پیش‌بینی بودن طراحی نشده است. گزینه‌های Uppercase و Without hyphens فقط قالب‌بندی را تغییر می‌دهند؛ مقدار همان است و بیشتر تجزیه‌گرها هر دو حالت حروف را می‌پذیرند.

نسخهٔ v4، v7 و نسخه‌های دیگر

نسخه‌های 1 و 6 از یک مهر زمانی و شناسهٔ گره ساخته می‌شوند که در اصل آدرس MAC رایانه بود و محل و زمان ساخت شناسه را فاش می‌کند. نسخه‌های 3 و 5 یک فضای نام و یک نام را با MD5 یا SHA-1 هش می‌کنند، پس ورودی یکسان همیشه همان UUID را می‌دهد. نسخهٔ 8 ساختاری آزاد برای طرح‌های سفارشی است. مهم‌ترین نسخهٔ تازه نسخهٔ 7 است: با یک مهر زمانی یونیکس 48 بیتی بر حسب میلی‌ثانیه شروع می‌شود و بقیه را با بیت‌های تصادفی پر می‌کند، بنابراین شناسه‌ها بر اساس زمان ساخت مرتب می‌شوند.

همین ترتیب دلیل بررسی v7 برای کلید اصلی پایگاه داده است. کلیدهای تصادفی v4 در سراسر ایندکس B-tree پخش می‌شوند، صفحه‌ها را می‌شکنند و با بزرگ شدن جدول به محلیت حافظهٔ نهان آسیب می‌زنند؛ اما کلیدهای v7 تقریباً به ترتیب صعودی و مانند ستون خودافزایشی می‌رسند، بی‌آنکه به شمارندهٔ مرکزی نیاز باشد. وقتی شناسه‌ای می‌خواهید که هیچ چیز، حتی زمان ساخت، را فاش نکند v4 را انتخاب کنید؛ وقتی سرعت درج و ترتیب زمانی مهم است v7 را. UUID یک شناسه است و راز نیست: برای رمز عبور و کلیدهای API از تولیدکنندهٔ رمز عبور استفاده کنید. رمزگذارها و بازرس‌های بیشتر در ابزارهای توسعه‌دهنده هستند.

پرسش‌های متداول

آیا ممکن است دو UUID تصادفی یکسان باشند؟
در تئوری بله، در عمل خیر. با 122 بیت تصادفی، حتی تولید یک میلیارد UUID از نوع v4 در هر ثانیه به مدت حدود 86 سال فقط حدود 50% احتمال یک برخورد می‌دهد، به شرط آنکه منبع تصادفی سالم باشد.
تفاوت UUID و GUID چیست؟
در اصل هیچ. GUID نام مایکروسافت برای همان شناسهٔ 128 بیتی است. برخی ابزارهای مایکروسافت GUID را با حروف بزرگ یا درون آکولاد نشان می‌دهند که بررسی‌کنندهٔ اینجا آن را می‌پذیرد.
چگونه نسخهٔ یک UUID را تشخیص دهم؟
به رقم اول گروه سوم نگاه کنید: 4 یعنی تصادفی، 7 یعنی مرتب بر اساس زمان، 1 یعنی مهر زمانی به‌علاوهٔ گره. آن را در Check a UUID بچسبانید تا نسخه و واریانت را ببینید.
آیا برای کلیدهای پایگاه داده بهتر است به‌جای v4 از UUIDv7 استفاده کنم؟
اغلب بله. کلیدهای v7 بر اساس زمان مرتب‌اند و ایندکس‌های B-tree را فشرده و درج را سریع نگه می‌دارند. اگر نباید زمان ساخت نهفته در شناسهٔ v7 آشکار شود، همان v4 را بگذارید.
آیا استفاده از UUID به‌عنوان توکن بازنشانی رمز عبور امن است؟
UUID نوع v4 از یک مولد امن 122 بیت تصادفی دارد که برای غیرقابل‌حدس بودن کافی است، اما بسیاری از کتابخانه‌ها توابع ویژهٔ توکن با انقضای صریح دارند. هرگز نسخه‌های زمان‌محور مانند v1 یا v7 را به‌عنوان راز به کار نبرید.