เครื่องมือสร้าง UUID

เครื่องมือสร้างและตรวจสอบ UUID ระดับมืออาชีพ รองรับ UUID หลายเวอร์ชัน ได้แก่ v1 (ใช้เวลา), v4 (สุ่ม), v5 (อ้างอิงชื่อ), และ v7 (เวลา Unix + สุ่ม) สามารถสร้างแบบกลุ่มได้โดยกำหนดจำนวนได้ อีกทั้งมีตัวเลือกการจัดรูปแบบที่ยืดหยุ่น เช่น แปลงเป็นตัวพิมพ์ใหญ่ ลบเครื่องหมายขีดกลาง และใส่วงเล็บ พร้อมฟีเจอร์ตรวจสอบ UUID ในตัวที่สามารถระบุเวอร์ชัน และมีตัวอย่างโค้ดหลายภาษา เหมาะสำหรับการระบุบันทึกในฐานข้อมูล การติดตามบันทึก การเชื่อมต่อข้ามระบบ และกรณีอื่น ๆ การดำเนินงานทั้งหมดทำงานภายในเบราว์เซอร์ของคุณ เพื่อรักษาความเป็นส่วนตัวและความปลอดภัย

เครื่องมือสร้าง UUID

ตัวเลือกการจัดรูปแบบ

เครื่องมือตรวจสอบ UUID

คู่มือการใช้งาน

UUID คือตัวระบุขนาด 128 บิต ที่มักแสดงเป็นสตริงความยาว 36 อักขระพร้อมเครื่องหมายขีดกลาง
UUID v1: อ้างอิงจากเวลาสะสมและที่อยู่ MAC มีลำดับตามเวลา แต่อาจเปิดเผยข้อมูลเวลาหรือตำแหน่ง
UUID เวอร์ชัน 4: สุ่มสร้างขึ้น ใช้กันอย่างแพร่หลายที่สุด ให้ความเป็นเอกลักษณ์และความเป็นส่วนตัวที่แข็งแกร่ง
UUID เวอร์ชัน 7: อิงจากมิลลิวินาทีของ Unix + บิตสุ่ม เรียงลำดับได้ตามธรรมชาติ และหลีกเลี่ยงปัญหาความเป็นส่วนตัวของเวอร์ชัน 1
UUID เวอร์ชัน 5: สุ่มแบบกำหนดได้จาก UUID ของเนมสเปซและชื่อ โดยใช้ SHA-1 อินพุตเหมือนกันจะให้เอาต์พุตเหมือนกันเสมอ
รูปแบบมาตรฐาน: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 ตัวอักษร)

คุณสมบัติ

  • รองรับ UUID เวอร์ชัน 1, 4, 5 และ 7
  • สร้างจำนวนมากแบบแบทช์ พร้อมปรับจำนวนได้ตามต้องการ
  • จัดรูปแบบยืดหยุ่น: ตัวพิมพ์ใหญ่, ลบเครื่องหมายขีดกลาง, เพิ่มวงเล็บปีกกา
  • มีระบบตรวจสอบในตัว พร้อมตรวจจับเวอร์ชันอัตโนมัติ
  • รองรับภาษาและธีมหลากหลายอย่างสมบูรณ์

UUID คืออะไร?

UUID คือตัวระบุขนาด 128 บิต ที่มักแสดงเป็นสตริงความยาว 36 อักขระพร้อมเครื่องหมายขีดกลาง

UUID v1: อ้างอิงจากเวลาสะสมและที่อยู่ MAC มีลำดับตามเวลา แต่อาจเปิดเผยข้อมูลเวลาหรือตำแหน่ง

UUID เวอร์ชัน 4: สุ่มสร้างขึ้น ใช้กันอย่างแพร่หลายที่สุด ให้ความเป็นเอกลักษณ์และความเป็นส่วนตัวที่แข็งแกร่ง

UUID เวอร์ชัน 7: อิงจากมิลลิวินาทีของ Unix + บิตสุ่ม เรียงลำดับได้ตามธรรมชาติ และหลีกเลี่ยงปัญหาความเป็นส่วนตัวของเวอร์ชัน 1

UUID เวอร์ชัน 5: สุ่มแบบกำหนดได้จาก UUID ของเนมสเปซและชื่อ โดยใช้ SHA-1 อินพุตเหมือนกันจะให้เอาต์พุตเหมือนกันเสมอ

UUID ตัวอย่างรวดเร็ว

รูปแบบมาตรฐาน:
550e8400-e29b-41d4-a716-446655440000
รูปแบบตัวพิมพ์ใหญ่:
550E8400-E29B-41D4-A716-446655440000
ไม่มีเครื่องหมายขีดกลาง:
550e8400e29b41d4a716446655440000
มีวงเล็บปีกกา:
{550e8400-e29b-41d4-a716-446655440000}

UUID กรณีการใช้งานทั่วไป

  • ตัวระบุที่ไม่ซ้ำกันสำหรับบันทึกฐานข้อมูลหรือทรัพยากร
  • รหัสติดตามสำหรับการบันทึกและการติดตามเหตุการณ์
  • ตัวระบุสาธารณะที่คาดเดาไม่ได้
  • ตัวระบุที่สอดคล้องกันในการบูรณาการระบบต่างๆ

UUID คำถามที่พบบ่อยและข้อควรระวัง

  • เวอร์ชัน 1 และความเป็นส่วนตัว: เวอร์ชัน 1 อาจเปิดเผยเวลาสแตมป์หรือตำแหน่งฮาร์ดแวร์ แนะนำให้ใช้เวอร์ชัน 4 สำหรับกรณีใช้งานที่ต้องใส่ใจความเป็นส่วนตัว
  • ความไวต่อตัวอักษร: การจับคู่ UUID ไม่แบ่งแยกระหว่างตัวพิมพ์ใหญ่และเล็ก
  • เครื่องหมายขีดกลางมีไว้เพื่อความอ่านง่ายเท่านั้น สามารถเก็บไว้ได้เว้นแต่มีข้อจำกัดจากระบบเก่า
  • รูปแบบมีวงเล็บปีกกา (ตัวอย่างเช่น {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}) ได้รับการยอมรับในบางสภาพแวดล้อม (ตัวอย่างเช่น รีจิสทรี Windows)
  • เวอร์ชัน 5 เป็นแบบกำหนดได้: เนมสเปซ + ชื่อเดียวกันจะให้ 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 (เวลา Unix + สุ่ม)
// 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 (เวลา Unix + สุ่ม)
<?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 (เวลา Unix + สุ่ม)
# 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 (เวลา Unix + สุ่ม)
// 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 (เวลา Unix + สุ่ม)
// 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 (เวลา Unix + สุ่ม)
// 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 */ }