UUID جنریٹر
پیشہ ورانہ UUID جنریشن اور توثیق کرنے والا ٹول جو متعدد UUID ورژنز کو سپورٹ کرتا ہے، جن میں v1 (ٹائم اسٹیمپ)، v4 (بے ترتیب)، v5 (نام پر مبنی)، اور v7 (یونکس ٹائم + بے ترتیب) شامل ہیں۔ حسب ضرورت تعداد کے ساتھ بیچ جنریشن پیش کرتا ہے، لچکدار فارمیٹنگ کے اختیارات بشمول بڑے حروف میں تبدیلی، ہائفن ہٹانا، اور بریس شامل کرنا۔ بلٹ ان UUID توثیق کار جس میں ورژن کا پتہ لگانے والی سہولت بھی شامل ہے اور کثیر لسانی کوڈ کی مثالیں فراہم کرتا ہے۔ ڈیٹا بیس ریکارڈ کی شناخت، لاگ ٹریسنگ، کراس سسٹم انٹرفیسز، اور دیگر منظرناموں کے لیے موزوں ہے۔ تمام کام آپ کے براؤزر میں مقامی طور پر ہوتے ہیں، جو رازداری اور سلامتی کو یقینی بناتا ہے۔
استعمال کا گائیڈ
خصوصیات
- UUID v1, v4, v5 اور v7 کی حمایت کرتا ہے
- حسب ضرورت تعداد کے ساتھ بلک جنریشن
- لچکدار فارمیٹنگ: بڑے حروف، ہائفنز ہٹانا، قوسین شامل کرنا
- خودکار ورژن کا پتہ لگانے کے ساتھ بلٹ ان توثیق کنندہ
- مکمل بین الاقوامی کاری اور کثیر تھیم سپورٹ
UUID کیا ہے؟
UUIDs 128-bit شناخت کنندہ ہیں، عام طور پر 36 حروف کی تاروں کے طور پر ہائفن کے ساتھ پیش ہوتے ہیں۔
UUID v1: ٹائم اسٹیمپ اور MAC ایڈریس پر مبنی؛ وقت کے لحاظ سے ترتیب میں ہوتا ہے لیکن وقت یا مقام کی معلومات لیک کر سکتا ہے۔
UUID v4: تصادفی طور پر تیار کیا گیا؛ سب سے زیادہ استعمال ہونے والا، مضبوط انفرادیت اور رازداری فراہم کرتا ہے۔
UUID v7: یونیکس ملی سیکنڈز + بے ترتیب بٹس پر مبنی؛ قدرتی طور پر ترتیب دے سکتا ہے اور v1 کے رازداری کے مسائل سے بچتا ہے۔
UUID v5: SHA-1 کا استعمال کرتے ہوئے نام کی جگہ UUID اور نام سے تعیناتی طور پر تیار کیا گیا؛ ایک جیسے ان پٹس ہمیشہ ایک جیسا آؤٹ پٹ پیدا کرتے ہیں۔
UUID عام استعمال کے منظرنامے
- ڈیٹا بیس ریکارڈز یا وسائل کے لیے منفرد شناخت کنندہ
- لاگنگ اور ایونٹ ٹریسنگ کے لیے ٹریس IDs
- غیر متوقع عوامی شناخت کنندہ
- سسٹم انٹیگریشنز میں مستقل شناخت کنندہ
UUID عمومی سوالات اور غلطیاں
- v1 اور رازداری: v1 ٹائم اسٹیمپ یا ہارڈویئر لوکیشنز کو ظاہر کر سکتا ہے؛ رازداری سے متعلق استعمال کے لیے v4 کو ترجیح دیں۔
- حساسیت کیس: UUID ممچنگ کیس-insensitive ہے۔
- ہائفنز صرف پڑھنے کے لیے ہیں؛ انہیں اس وقت تک رکھیں جب تک کہ پرانے سسٹمز کی پابندی نہ ہو۔
- قوس والی شکل (مثال کے طور پر {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}) کچھ ماحول میں قبول کی جاتی ہے (مثال کے طور پر Windows Registry)۔
- v5 تعیناتی پر مبنی ہے: ایک جیسی جگہ + نام = ایک جیسا UUID۔ Idempotent آپریشنز کے لیے مثالی ہے؛ اس وقت سے بچیں جب غیر متوقعیت درکار ہو۔
پروگرامنگ زبانوں میں UUIDs کا استعمال کیسے کریں
// UUID v4 (simple)
function uuidv4(){
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
const r = Math.random()*16|0, v = c === 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
const id = uuidv4();
// UUID v7 (Unix ms + randomness)
function uuidv7(){
const cryptoObj = (globalThis.crypto || globalThis.msCrypto);
const rb = n => { const a = new Uint8Array(n); cryptoObj?.getRandomValues ? cryptoObj.getRandomValues(a) : a.forEach((_,i)=>a[i]=Math.random()*256|0); return a; };
const hex = b => Array.from(b).map(x=>x.toString(16).padStart(2,'0')).join('');
const ts = BigInt(Date.now()).toString(16).padStart(12,'0');
const ver = rb(2); ver[0] = (ver[0] & 0x0f) | 0x70; // set version 7
const vrn = rb(2); vrn[0] = (vrn[0] & 0x3f) | 0x80; // RFC4122 variant
const tail = rb(6);
return `${ts.slice(0,8)}-${ts.slice(8,12)}-${hex(ver)}-${hex(vrn)}-${hex(tail)}`;
}
const id7 = uuidv7();
const re=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
re.test(id); // true/false
<?php
// v4 using random_bytes
function uuidv4(){
$data = random_bytes(16);
$data[6] = chr((ord($data[6]) & 0x0f) | 0x40);
$data[8] = chr((ord($data[8]) & 0x3f) | 0x80);
return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}
$id = uuidv4();
<?php
// composer require ramsey/uuid:^4.7
use Ramsey\Uuid\Uuid;
$uuid7 = Uuid::uuid7();
<?php
$re = '/^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i';
preg_match($re, $id) === 1; // true/false
import uuid
# v4
uid = uuid.uuid4()
# v1
uid1 = uuid.uuid1()
# pip install uuid6
from uuid6 import uuid7
uid7 = uuid7()
import re
re_uuid = re.compile(r'^[0-9a-f]{8}-[0-9a-f]{4}-[1-57][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', re.I)
bool(re_uuid.match(str(uid)))
// go get github.com/google/uuid
import "github.com/google/uuid"
id := uuid.New() // v4
id1 := uuid.NewUUID() // v1 (may return error)
// go get github.com/gofrs/uuid/v5
import (
uuid "github.com/gofrs/uuid/v5"
)
id7, err := uuid.NewV7()
import "github.com/google/uuid"
_, err := uuid.Parse(id.String()) // err == nil means valid
// Cargo.toml: uuid = { version = "1", features = ["v4", "v1"] }
use uuid::Uuid;
let v4 = Uuid::new_v4();
// v1 requires a context/ts, often via external crate; shown for completeness
// Cargo.toml: uuid = { version = "1", features = ["v7"] }
use uuid::Uuid;
let v7 = Uuid::now_v7();
use uuid::Uuid;
let ok = Uuid::parse_str(v4.to_string().as_str()).is_ok();
import java.util.UUID;
UUID id = UUID.randomUUID(); // v4
// Maven: com.github.f4b6a3:uuid-creator
import com.github.f4b6a3.uuid.UuidCreator;
UUID v7 = UuidCreator.getTimeOrderedEpoch(); // UUIDv7
import java.util.UUID;
try { UUID.fromString(id.toString()); /* valid */ } catch (IllegalArgumentException ex) { /* invalid */ }