Δημιουργός UUID

Ένας επαγγελματίας εργαλείο δημιουργίας και επικύρωσης UUID που υποστηρίζει πολλαπλές εκδόσεις UUID, συμπεριλαμβανομένου του v1 (χρονοσήμανση), του v4 (τυχαία), του v5 (βάσει ονόματος) και του v7 (Unix time + τυχαίο). Παρέχει δημιουργία παρτίδας με προσαρμόσιμο αριθμό, ευέλικτες επιλογές μορφοποίησης συμπεριλαμβανομένης μετατροπής σε κεφαλαία γράμματα, αφαίρεσης παύλων και προσθήκης παρενθέσεων. Περιλαμβάνει ενσωματωμένο επικυρωτή UUID με εντοπισμό έκδοσης και παρέχει παραδείγματα κώδικα για πολλαπλές γλώσσες. Κατάλληλο για αναγνώριση εγγραφών βάσης δεδομένων, ανίχνευση αρχείων καταγραφής, διεπαφές συστημάτων μεταξύ τους και άλλες περιπτώσεις. Όλες οι εργασίες εκτελούνται τοπικά στο πρόηγημα περιήγησής σας, διασφαλίζοντας απόρρητο και ασφάλεια.

Δημιουργός UUID

Επιλογές Μορφοποίησης

Επικυρωτής UUID

Οδηγός Χρήσης

Τα UUID είναι αναγνωριστικά 128 bit, συνήθως αντιπροσωπεύονται ως συμβολοσειρές 36 χαρακτήρων με παύλες.
UUID v1: Βασίζεται στην χρονοσήμανση και την διεύθυνση MAC. Ταξινομούνται ανά χρόνο, αλλά μπορεί να αποκαλύψουν πληροφορίες χρονοσήμανσης ή τοποθεσίας.
UUID v4: Τυχαία παραγόμενο; πιο ευρέως χρησιμοποιούμενο, παρέχει ισχυρή μοναδικότητα και ιδιωτικότητα.
UUID v7: Βασισμένο σε χιλιοστά δευτερολέπτου Unix + τυχαία bit; φυσικά ταξινομήσιμο και αποφεύγει τα ζητήματα ιδιωτικότητας του v1.
UUID v5: Παράγεταιdeterministically από ένα UUID χώρου ονομάτων και όνομα χρησιμοποιώντας SHA-1; ίδιες εισόδους παράγουν πάντα την ίδια έξοδο.
Τυποποιημένη μορφή: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (36 χαρακτήρες).

Χαρακτηριστικά

  • Υποστηρίζει UUID v1, v4, v5 και v7
  • Ομαδική παραγωγή με προσαρμόσιμο αριθμό
  • Εύκαμπτη μορφοποίηση: κεφαλαία, αφαίρεση παυλών, προσθήκη αγκυλών
  • Ενσωματωμένος επαληθευτής με αυτόματη ανίχνευση έκδοσης
  • Πλήρης υποστήριξη διεθνοποίησης και πολλαπλών θεμάτων

Τι είναι ένα UUID;

Τα UUID είναι αναγνωριστικά 128 bit, συνήθως αντιπροσωπεύονται ως συμβολοσειρές 36 χαρακτήρων με παύλες.

UUID v1: Βασίζεται στην χρονοσήμανση και την διεύθυνση MAC. Ταξινομούνται ανά χρόνο, αλλά μπορεί να αποκαλύψουν πληροφορίες χρονοσήμανσης ή τοποθεσίας.

UUID v4: Τυχαία παραγόμενο; πιο ευρέως χρησιμοποιούμενο, παρέχει ισχυρή μοναδικότητα και ιδιωτικότητα.

UUID v7: Βασισμένο σε χιλιοστά δευτερολέπτου Unix + τυχαία bit; φυσικά ταξινομήσιμο και αποφεύγει τα ζητήματα ιδιωτικότητας του v1.

UUID v5: Παράγεταιdeterministically από ένα UUID χώρου ονομάτων και όνομα χρησιμοποιώντας SHA-1; ίδιες εισόδους παράγουν πάντα την ίδια έξοδο.

UUID Γρήγορα Παραδείγματα

Τυποποιημένη μορφή:
550e8400-e29b-41d4-a716-446655440000
Κεφαλαία μορφή:
550E8400-E29B-41D4-A716-446655440000
Χωρίς παύλες:
550e8400e29b41d4a716446655440000
Με αγκύλες:
{550e8400-e29b-41d4-a716-446655440000}

UUID Συνήθεις Περίπτωσεις Χρήσης

  • Μοναδικά αναγνωριστικά για εγγραφές βάσεων δεδομένων ή πόρους
  • Αναγνωριστικά ιχνηλάτησης για καταγραφή δεδομένων και ιχνηλάτηση συμβάντων
  • Απροβλέψιμα δημόσια αναγνωριστικά
  • Συνεπή αναγνωριστικά σε συστημικές ενσωματώσεις

UUID Συχνές Ερωτήσεις & Παγίδες

  • v1 και Ιδιωτικότητα: Το v1 μπορεί να αποκαλύψει χρονικές σφραγίδες ή υλικές θέσεις; προτιμήστε το v4 για χρήσεις ευαίσθητες στην ιδιωτικότητα.
  • Ευαισθησία πεζών/κεφαλαίων: Η αντιστοίχιση UUID δεν είναι ευαίσθητη στην πεζοκεφαλαία.
  • Οι παύλες είναι καθαρά για ευαναγνωσία; διατηρήστε τις εκτός αν περιορίζεστε από παλαιότερα συστήματα.
  • Η μορφή με αγκύλες (π.χ. {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}) γίνεται δεκτή σε ορισμένα περιβάλλοντα (π.χ. Μητρώο Windows).
  • Το v5 είναι deterministik: ίδιος χώρος ονομάτων + όνομα => ίδιο UUID. Ιδανικό για idempotent λειτουργίες; αποφύγετε όταν απαιτείται απροβλεψιμότητα.

Πώς να Χρησιμοποιήσετε 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 Time + Τυχαίο)
// 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 Time + Τυχαίο)
<?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 Time + Τυχαίο)
# 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 Time + Τυχαίο)
// 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 Time + Τυχαίο)
// 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 Time + Τυχαίο)
// 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 */ }