Penjana UUID

Alat penjanaan dan pengesahan UUID profesional yang menyokong pelbagai versi UUID termasuk v1 (cap masa), v4 (rawak), v5 (berasaskan nama), dan v7 (masa Unix + rawak). Menawarkan penjanaan batch dengan bilangan boleh suai, pilihan pemformatan fleksibel termasuk penukaran huruf besar, penyingkiran tanda sempang, dan penambahan kurungan. Termasuk pengesah UUID terbina dalam dengan pengesanan versi dan menyediakan contoh kod pelbagai bahasa. Sesuai untuk pengenalan rekod pangkalan data, penjejakan log, antara muka silang sistem, dan senario lain. Semua operasi dilakukan secara tempatan dalam pelayar anda, memastikan privasi dan keselamatan.

Penjana UUID

Pilihan Format

Pengesah UUID

Panduan Penggunaan

UUID ialah pengenal 128-bit, biasanya diwakili sebagai rentetan 36 aksara dengan tanda sempang.
UUID v1: Berasaskan cap masa dan alamat MAC; teratur mengikut masa tetapi mungkin mendedahkan maklumat masa atau lokasi.
UUID v4: Dijana secara rawak; paling kerap digunakan, menawarkan keunikan dan privasi yang kuat.
UUID v7: Berasaskan milisaat Unix + bit rawak; boleh disusun secara semula jadi dan mengelakkan isu privasi v1.
UUID v5: Dijana secara deterministik daripada UUID ruang nama dan nama menggunakan SHA-1; input yang sama sentiasa menghasilkan output yang sama.
Format piawai: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 aksara).

Ciri-ciri

  • Menyokong UUID v1, v4, v5, dan v7
  • Penjanaan kelompok dengan bilangan yang boleh disesuaikan
  • Pemformatan fleksibel: huruf besar, buang tanda sempang, tambah kurungan
  • Pengesah terbina dalam dengan pengesanan versi automatik
  • Antarabangsa penuh dan sokongan pelbagai tema

Apakah UUID?

UUID ialah pengenal 128-bit, biasanya diwakili sebagai rentetan 36 aksara dengan tanda sempang.

UUID v1: Berasaskan cap masa dan alamat MAC; teratur mengikut masa tetapi mungkin mendedahkan maklumat masa atau lokasi.

UUID v4: Dijana secara rawak; paling kerap digunakan, menawarkan keunikan dan privasi yang kuat.

UUID v7: Berasaskan milisaat Unix + bit rawak; boleh disusun secara semula jadi dan mengelakkan isu privasi v1.

UUID v5: Dijana secara deterministik daripada UUID ruang nama dan nama menggunakan SHA-1; input yang sama sentiasa menghasilkan output yang sama.

UUID Contoh Pantas

Format piawai:
550e8400-e29b-41d4-a716-446655440000
Format huruf besar:
550E8400-E29B-41D4-A716-446655440000
Tanpa tanda sempang:
550e8400e29b41d4a716446655440000
Dengan kurungan:
{550e8400-e29b-41d4-a716-446655440000}

UUID Kes Penggunaan Lazim

  • Pengenal unik untuk rekod pangkalan data atau sumber
  • ID jejak untuk log dan penjejakan peristiwa
  • Pengenal awam yang tidak dapat diramalkan
  • Pengenal konsisten merentas integrasi sistem

UUID Soalan Lazim & Kesilapan Umum

  • v1 dan Privasi: v1 boleh mendedahkan cap masa atau lokasi perkakasan; utamakan v4 untuk kes penggunaan sensitif privasi.
  • Kepekaan huruf: Padanan UUID tidak peka terhadap huruf besar/kecil.
  • Tanda sempang hanya untuk kemudahan bacaan; kekalkan kecuali dikekang oleh sistem lama.
  • Format berkuran (cth., {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}) diterima dalam sesetengah persekitaran (cth., Pendaftaran Windows).
  • v5 bersifat deterministik: ruang nama + nama yang sama => UUID yang sama. Sesuai untuk operasi idempoten; elakkan apabila ketidakterdugaan diperlukan.

Cara Menggunakan UUID dalam Bahasa Pengaturcaraan

JavaScript
Jana
// 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 (Masa Unix + Rawak)
// 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();
Sahkan
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
Jana
<?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 (Masa Unix + Rawak)
<?php
// composer require ramsey/uuid:^4.7
use Ramsey\Uuid\Uuid;

$uuid7 = Uuid::uuid7();
Sahkan
<?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
Jana
import uuid
# v4
uid = uuid.uuid4()
# v1
uid1 = uuid.uuid1()
UUID v7 (Masa Unix + Rawak)
# pip install uuid6
from uuid6 import uuid7

uid7 = uuid7()
Sahkan
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
Jana
// go get github.com/google/uuid
import "github.com/google/uuid"

id := uuid.New()     // v4
id1 := uuid.NewUUID() // v1 (may return error)
UUID v7 (Masa Unix + Rawak)
// go get github.com/gofrs/uuid/v5
import (
  uuid "github.com/gofrs/uuid/v5"
)

id7, err := uuid.NewV7()
Sahkan
import "github.com/google/uuid"
_, err := uuid.Parse(id.String()) // err == nil means valid
Rust
Jana
// 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 (Masa Unix + Rawak)
// Cargo.toml: uuid = { version = "1", features = ["v7"] }
use uuid::Uuid;

let v7 = Uuid::now_v7();
Sahkan
use uuid::Uuid;
let ok = Uuid::parse_str(v4.to_string().as_str()).is_ok();
Java
Jana
import java.util.UUID;

UUID id = UUID.randomUUID(); // v4
UUID v7 (Masa Unix + Rawak)
// Maven: com.github.f4b6a3:uuid-creator
import com.github.f4b6a3.uuid.UuidCreator;

UUID v7 = UuidCreator.getTimeOrderedEpoch(); // UUIDv7
Sahkan
import java.util.UUID;

try { UUID.fromString(id.toString()); /* valid */ } catch (IllegalArgumentException ex) { /* invalid */ }