UUID জেনারেটর টুল

UUID (v1, v4, v5, v7) জেনারেট ও ভ্যালিডেট করুন, ব্যাচ জেনারেশন এবং বহু ফরম্যাট অপশন সমর্থন করে, এবং বিভিন্ন প্রোগ্রামিং ভাষার কোড উদাহরণ প্রদান করে।

UUID জেনারেটর

ফরম্যাট অপশন

UUID ভ্যালিডেটর

ব্যবহার নির্দেশিকা

UUID হল 128-বিট শনাক্তকারী, যা স্ট্যান্ডার্ডভাবে 36 অক্ষরের একটি স্ট্রিং হিসাবে প্রদর্শিত হয়, যাতে হাইফেন রয়েছে।
UUID v1: টাইমস্ট্যাম্প এবং নেটওয়ার্ক কার্ড তথ্যের উপর ভিত্তি করে; সময় অনুযায়ী সাজানো যায়, কিন্তু সময়/অবস্থান প্রকাশ করতে পারে।
UUID v4: র‍্যান্ডম সংখ্যার উপর ভিত্তি করে; সবচেয়ে প্রচলিত, ভালো অনন্যতা এবং গোপনীয়তা প্রদান করে।
UUID v7: ইউনিক্স মিলিসেকেন্ড টাইম + র‍্যান্ডম নাম্বারের উপর ভিত্তি করে; স্বাভাবিকভাবেই সাজানো যায় এবং v1-এর গোপনীয়তা সমস্যা এড়ায়।
UUID v5: নেমস্পেস UUID এবং নামের উপর ভিত্তি করে, SHA-1 দিয়ে হিসাব করা হয়; একই ইনপুট একই আউটপুট দেয়।
স্ট্যান্ডার্ড ফরম্যাট: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 অক্ষর).

বৈশিষ্ট্যসমূহ

  • UUID v1, v4, v5, v7 সমর্থন করে
  • কাস্টম সংখ্যায় ব্যাচ জেনারেশন সমর্থন করে
  • ফ্লেক্সিবল ফরম্যাটিং: বড় হরফ, হাইফেন সরানো, ব্রেস যোগ করা
  • অন্তর্নির্মিত ভ্যালিডেটর এবং সংস্করণ শনাক্তকারী
  • পূর্ণাঙ্গ আন্তর্জাতিকীকরণ এবং বহু থিম সমর্থন

UUID কী?

UUID হল 128-বিট শনাক্তকারী, যা স্ট্যান্ডার্ডভাবে 36 অক্ষরের একটি স্ট্রিং হিসাবে প্রদর্শিত হয়, যাতে হাইফেন রয়েছে।

UUID v1: টাইমস্ট্যাম্প এবং নেটওয়ার্ক কার্ড তথ্যের উপর ভিত্তি করে; সময় অনুযায়ী সাজানো যায়, কিন্তু সময়/অবস্থান প্রকাশ করতে পারে।

UUID v4: র‍্যান্ডম সংখ্যার উপর ভিত্তি করে; সবচেয়ে প্রচলিত, ভালো অনন্যতা এবং গোপনীয়তা প্রদান করে।

UUID v7: ইউনিক্স মিলিসেকেন্ড টাইম + র‍্যান্ডম নাম্বারের উপর ভিত্তি করে; স্বাভাবিকভাবেই সাজানো যায় এবং v1-এর গোপনীয়তা সমস্যা এড়ায়।

UUID v5: নেমস্পেস UUID এবং নামের উপর ভিত্তি করে, SHA-1 দিয়ে হিসাব করা হয়; একই ইনপুট একই আউটপুট দেয়।

UUID দ্রুত উদাহরণ

স্ট্যান্ডার্ড ফরম্যাট:
550e8400-e29b-41d4-a716-446655440000
বড় হরফ ফরম্যাট:
550E8400-E29B-41D4-A716-446655440000
হাইফেন ছাড়া:
550e8400e29b41d4a716446655440000
ব্রেস সহ:
{550e8400-e29b-41d4-a716-446655440000}

UUID সাধারণ ব্যবহার

  • ডাটাবেস রেকর্ড বা রিসোর্সের জন্য অনন্য শনাক্তকারী
  • লগ এবং ইভেন্ট ট্রেস ID হিসাবে
  • অনুমান করা কঠিন পাবলিক শনাক্তকারী
  • সিস্টেমের মধ্যে এককীকৃত শনাক্তকারী হিসাবে

UUID প্রায়শই জিজ্ঞাসিত প্রশ্ন ও প্রায়শই ভুল

  • v1 এবং গোপনীয়তা: v1 সময়/অবস্থান প্রকাশ করতে পারে, গোপনীয়তা গুরুত্বপূর্ণ হলে v4 ব্যবহার করুন।
  • বড় ও ছোট হরফ সমান: মিল খুঁজার সময় বড়-ছোট হরফ উপেক্ষা করা হয়।
  • হাইফেনগুলি শুধুমাত্র প্রদর্শনের জন্য; ব্যতিক্রম না হলে সাধারণত রাখা উচিত।
  • বন্ধনী ফরম্যাট কিছু পরিবেশে (যেমন Windows রেজিস্ট্রি) গ্রহণযোগ্য।
  • v5 নির্ধারণমূলক (একই নেমস্পেস + নাম => একই UUID)। আইডেমপোটেন্ট স্কেনারিওর জন্য উপযুক্ত; অপ্রত্যাশিততা প্রয়োজনীয় স্কেনারিওর জন্য উপযুক্ত নয়।

প্রোগ্রামিং ভাষায় UUID ব্যবহার করা কীভাবে?

JavaScript
উৎপাদন
// 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 (ইউনিক্স টাইম + র‍্যান্ডম)
// 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
উৎপাদন
<?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();
UUID v7 (ইউনিক্স টাইম + র‍্যান্ডম)
<?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
Python
উৎপাদন
import uuid
# v4
uid = uuid.uuid4()
# v1
uid1 = uuid.uuid1()
UUID v7 (ইউনিক্স টাইম + র‍্যান্ডম)
# 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
উৎপাদন
// go get github.com/google/uuid
import "github.com/google/uuid"

id := uuid.New()     // v4
id1 := uuid.NewUUID() // v1 (may return error)
UUID v7 (ইউনিক্স টাইম + র‍্যান্ডম)
// 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
Rust
উৎপাদন
// 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
UUID v7 (ইউনিক্স টাইম + র‍্যান্ডম)
// 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();
Java
উৎপাদন
import java.util.UUID;

UUID id = UUID.randomUUID(); // v4
UUID v7 (ইউনিক্স টাইম + র‍্যান্ডম)
// 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 */ }