UUID Oluşturucu

Bu UUID oluşturucu ile anında rastgele bir UUID v4 veya zaman sıralı bir UUID v7 oluşturun ya da tek seferde 10.000'e kadar üretin. Çevrimiçi GUID oluşturma için de kullanılır: yeni bir GUID de aynı türden 128 bitlik bir değerdir. Sürümünü, oluşturulma zamanını ve her alanını çözmek için herhangi bir UUID yapıştırın.

RFC 9562 · crypto.getRandomValues · tarayıcınızda oluşturulur ve okunur, hiçbir şey gönderilmez

Renkli basamak sürümdür: her UUID'de üçüncü grubun ilk basamağı.

v4 · Rastgele36 karakter · 122 rastgele bit
xxxxxxxx-xxxx-4xxx-Nxxx-xxxxxxxxxxxx
Anatomi · RFC 9562 §5.4128 bit · 32 onaltılık basamak · 36 karakter
Okumak için bir alanın üzerine gelin veya dokunun

crypto.getRandomValues ile tarayıcınızda oluşturulur ve okunur; hiçbir şey gönderilmez.

Biçim

UUID nedir ve UUID neyin kısaltmasıdır?

UUID, Universally Unique Identifier'ın (Evrensel Benzersiz Tanımlayıcı) kısaltmasıdır: herhangi bir bilgisayarın kendi başına oluşturabildiği ve yine de başka hiçbir bilgisayarın aynısını oluşturmayacağını varsayabildiği 128 bitlik bir etiket. Beş gruba ayrılmış 32 onaltılık basamakla yazılır, örneğin 919108f7-52d1-4320-9bac-f847db4148a8.

Biçim, RFC 4122'nin yerini alan ve 6, 7 ve 8 sürümlerini ekleyen RFC 9562 (Mayıs 2024) ile tanımlanır. UUID dağıtan merkezi bir kayıt yoktur: benzersizlik, sürüme göre rastgelelikten, bir zaman damgasından veya bir adın hash'lenmesinden gelir.

Veritabanları onları birincil anahtar, API'ler istek ve nesne kimliği, işletim sistemleri de diskler, bölümler ve yazılım bileşenleri için kullanır. GUID (Globally Unique Identifier, Küresel Benzersiz Tanımlayıcı), Microsoft'un aynı şey için kullandığı addır.

Bir değer, dört ölçüRFC 9562 §4

UniversallyUniqueIDentifier

  1. 128 bit
  2. 16 bayt
  3. 32 onaltılık basamak
  4. 36 tirelerle birlikte karakter919108f7-52d1-4320-9bac-f847db4148a8

GUIDMicrosoft'un aynı değer için kullandığı ad

RFC 9562'nin sürüm 4 örneği dört şekilde sayıldı. Metin biçimi 32 onaltılık basamağa dört tire ekler: 36 karakter.
UUID oluşturucu: zaman damgası, sürümü ve rastgele bitleri alan alan işaretlenmiş bir UUID v7 ve bir dizi v7 UUIDUUID oluşturucu: zaman damgası, sürümü ve rastgele bitleri alan alan işaretlenmiş bir UUID v7 ve bir dizi v7 UUIDBir sürüm seçinRastgele v4, zaman sıralı v7, ada dayalı v5 ve diğerleri; her birinin kendi rengi var.Tek tıkKopyalayın veya yenisini oluşturun; 10.000'e kadar UUID'lik bir toplu üretim metin, CSV, JSON veya SQL olarak çıkar.Her alanRFC 9562'nin bu sürüm için tanımladığı bitler; bir v7'nin taşıdığı zaman okunmuş olarak.Her biçimSüslü parantez, tiresiz, büyük harf, Base64url, tam sayı veya .NET bayt sırası.
Parçalarına ayrılmış bir UUID v7: 48 bitlik zaman damgası, sürüm basamağı, varyant bitleri ve rastgele kısım. Her parçanın neyi gösterdiğini görmek için bir numara seçin.

UUID biçimi ve uzunluğu: 36 karakter

Bir UUID 128 bittir; 8, 4, 4, 4 ve 12'lik gruplar hâlinde 32 onaltılık basamak ve 4 tireyle yazılır: 36 karakter. Üçüncü grubun ilk basamağı sürümdür, dördüncü grubun ilk basamağı ise varyantı gösterir: RFC 9562 UUID'lerinde 8, 9, a veya b.

Yani 017f22e2-79b0-7cc3-98c4-dc0c0c07398f, RFC varyantında bir sürüm 7 UUID'dir. Büyük, küçük ve karışık harf geçerlidir; çoğu araç küçük harf, macOS uuidgen ise büyük harf yazdırır. Tiresiz 32 karakter, süslü parantez içinde 38 (.NET'in B biçimi), urn:uuid: olarak 45, Base64url'de ise 22 karakterdir.

RFC biçimini denetleyen bir düzenli ifade, büyük/küçük harf duyarsız bayrakla: ^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$. Geçerli ama özel olan Nil ve Max UUID'leri reddeder; yukarıdaki çözücü bunları adlarıyla gösterir.

Metin biçimiRFC 9562 §4
017f22e28-79b04-7cc34-98c44-dc0c0c07398f12

32 onaltılık basamak + 4 tire = 36 karakter

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxxM sürüm: 1–8N varyant: 8, 9, a veya b
Düzenli ifade · büyük/küçük harf duyarsız^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
Aynı 128 bit, başka yazımlarla
  • Standart017f22e2-79b0-7cc3-98c4-dc0c0c07398f36
  • Tiresiz017f22e279b07cc398c4dc0c0c07398f32
  • Süslü parantez {…}{017f22e2-79b0-7cc3-98c4-dc0c0c07398f}38
  • urn:uuid:urn:uuid:017f22e2-79b0-7cc3-98c4-dc0c0c07398f45
  • Base64urlAX8i4nmwfMOYxNwMDAc5jw22
  • Base64AX8i4nmwfMOYxNwMDAc5jw==24
  • Base58BihbxwwQ4NZZpKRH9JDCz21
  • Base3201FWHE4YDGFK1SHH6W1G60EECF26
  • Tam sayı1989357241971137676463954034883508623en fazla 39
  • İkili01 7f 22 e2 79 b0 7c c3 98 c4 dc 0c 0c 07 39 8f16 bayt
RFC 9562'nin kendi v7 örneği, her yazım biçiminde. Düzenli ifade Nil ve Max UUID'leri bilerek reddeder: sürümleri yoktur.

UUID sürümleri: v1'den v8'e

Sürüm, bir UUID'nin nasıl oluşturulduğunu söyler: v4 rastgele bitlerden, v7 zaman ve rastgele bitlerden, v1 ve v6 bir zaman damgası ve bir düğüm kimliğinden, v3 ve v5 bir adın hash'lenmesiyle, v8 ise üreticinin kendi düzeniyle.

Sürüm 2 ve 0 burada oluşturulmaz: v2 (DCE Security) ayrılmıştır ve RFC 9562 düzenini tanımlamaz, 0 ise bir sürüm değildir. İki özel değerin sürümü yoktur: Nil UUID tümüyle sıfırlardan, Max UUID ise tümüyle birlerden oluşur (ffffffff-ffff-ffff-ffff-ffffffffffff, RFC 9562 ile gelen yeni değer).

RFC 9562, yeni sistemler için v1 ve v6 yerine v7'yi, v3 yerine de v5'i önerir. Değerin ne zaman oluşturulduğu hakkında hiçbir şey söylememesi gerektiğinde v4 sade seçenek olmayı sürdürür.

Sürüm128 bitiNeyden oluşurZamana göre sıralanır
v1Zaman + düğüm · §5.1Zaman (100 ns) + saat dizisi + düğümHayır
v2DCE Security: ayrılmış, RFC 9562'de düzeni yokOluşturulmaz: tanımlı bir düzeni yok–
v3Ad · MD5 · §5.3Bir ad alanı + bir adın MD5 hash'iHayır
v4Rastgele · §5.4Rastgele bitlerHayır
v5Ad · SHA-1 · §5.5Bir ad alanı + bir adın SHA-1 hash'iHayır
v6Sıralanabilir v1 · §5.6v1'in alanları, önce zamanın yüksek bitleriEvet
v7Zaman sıralı · §5.7Unix zamanı (ms) + rastgele bitlerEvet
v8Özel · §5.8Üreticinin kendi düzeniHayır
Nil§5.9Tümü sıfır: “değer yok”–
Max§5.10Tümü bir: bir işaret değeri–
  • zaman
  • rastgele
  • hash
  • saat dizisi
  • düğüm
  • sürüm
  • varyant
Her çubuk, bir sürümün 128 bitini RFC 9562'nin düzenlediği gibi, RFC'nin kendi test vektörlerinden gösterir. Zamanı başa yalnızca v6 ve v7 koyar, bu yüzden metin olarak zamana göre yalnızca onlar sıralanır.

UUID v4 mü, v7 mi: hangisini kullanmalısınız?

Veritabanı anahtarları ve sıraladığınız veya indekslediğiniz her şey için v7 kullanın: oluşturulma zamanıyla başlar, bu yüzden yeni satırlar indeksin sonuna eklenir. Kimliğin ne zaman oluşturulduğunu açığa vurmaması gerekiyorsa v4 kullanın: 122 serbest bitinin tümü rastgeledir.

Rastgele v4 anahtarları her eklemeyi B-tree indeksinin her yerine dağıtır; bu da sayfaları böler ve indeksin daha büyük bir kısmını bellekte sıcak tutar. v7 anahtarları ise otomatik artan bir sayı gibi sırayla gelir, ama her sunucu onları bir veritabanına sormadan üretebilir. Bir v7 milisaniye başına 74 rastgele bit taşır, bu yüzden aynı anda birer tane üreten iki sunucu bile çakışmaz.

Bedeli şu: bir v7'yi gören herkes onun oluşturulduğu milisaniyeyi okuyabilir (birini yukarıdaki çözücüye yapıştırın). Bu önemliyse v4 kullanın ya da v7'yi içeride tutup dışarıya farklı bir kimlik gösterin.

Bir B-tree indeksine 12 ekleme8 yaprak sayfa · her birinde 16 anahtar
v4 anahtarları herhangi bir yere düşer8 sayfadan 7 tanesi etkilendi · 3 sayfa bölünmesi
İlk bayta göre sayfalar
00–1fbölündü
20–3f
40–5f
60–7f
80–9f
a0–bf
c0–dfbölündü
e0–ffbölündü
c100eb4b-4f3f-4b29-ad77-da7cd9d1eda592c97333-2db8-4fc2-b5b6-cedd8c7abede
v7 anahtarları sona düşer8 sayfadan 1 tanesi etkilendi · 0 sayfa bölünmesi
Anahtarların oluşturulduğu güne göre sayfalar
17 Eki
18 Eki
19 Eki
20 Eki
21 Eki
22 Eki
23 Eki
24 Eki
01a16d3e-e1c0-70f6-99ec-6d454991b2fa01a16d3e-e1c0-70f6-99ec-6d45c2f6b35b
  • zaten indekste
  • boş
  • yeni v4
  • yeni v7
  • sayfa bölünmesi: anahtarlarının yarısı yeni bir sayfaya taşınır
Bir model, kıyaslama testi değil: 16 anahtarlık yaprak sayfalar. Rastgele anahtarlar eski sayfaları neredeyse dolu bulur ve böler; v7'nin ilk baytları zamandır, bu yüzden on ikisi de hâlâ yeri olan en yeni sayfaya gider.

GUID ile UUID arasında fark var mı?

GUID ve UUID, aynı metin biçimindeki aynı 128 bitlik değerdir; GUID, Microsoft'un ona verdiği addır. .NET'te Guid.NewGuid() rastgele bir sürüm 4 UUID, .NET 9'daki Guid.CreateVersion7() ise bir sürüm 7 UUID oluşturur.

Fark bellektedir. Microsoft'un GUID yapısı ilk üç grubu little-endian tam sayılar olarak saklar; bu yüzden .NET'in ToByteArray() yöntemi ilk 8 baytı RFC 9562'nin ağ bayt sırasından farklı bir sırayla verir: 919108f7-52d1-…, f7 08 91 91 d1 52 … baytlarına dönüşür. Metin aynıdır; sistemler arasında taşınan ham baytların dönüştürülmesi gerekir. Çözücü iki sırayı da gösterir.

SQL Server'ın uniqueidentifier türü de önce son altı baytına göre sıralar, bu yüzden v7 değerleri orada zaman sırasında kalmaz; NEWSEQUENTIALID() sırada kalan değerler üretir, ancak bunlar yeniden başlatmadan sonra daha düşük bir değerden yeniden başlayabilir ve tahmin edilmeleri kolaydır. Eski COM GUID'leri, RFC 9562'nin varyant bitleri yerine Microsoft'un kendi varyant bitlerini taşıyabilir; çözücü bu varyantı adıyla gösterir.

Bir GUID, üç bayt sırası16 bayt
919108f7-52d1-4320-9bac-f847db4148a8
RFC 9562 ağ sırası
.NET Guid.ToByteArray()
SQL Server uniqueidentifier sırasıSırayı son altı bayt belirler
  • Data1 · 4 bayt, ters
  • Data2 · ters
  • Data3 · ters
  • Data4 · olduğu gibi
Bellekte aynı metin: .NET ilk üç grubu little-endian saklar, SQL Server ise önce son altı bayta göre sıralar; bu yüzden zaman sıralı v7 anahtarları orada sırada kalmaz.

Kodda UUID nasıl oluşturulur?

Çoğu dil tek satırda bir v4 UUID oluşturur ve birçoğu artık v7 de üretir: Python 3.14'teki uuid.uuid7(), .NET 9'daki Guid.CreateVersion7(), Java 26'daki UUID.ofEpochMillis(), Go 1.27'deki uuid.NewV7(), Node.js 26.1'deki crypto.randomUUIDv7() ve PostgreSQL 18'deki uuidv7(). Tarayıcılarda ise hâlâ yalnızca bir v4 üreten crypto.randomUUID() var.

Tek satırlık kod için dilinizi seçin. Her v7 uygulaması aynı milisaniyede oluşturulan UUID'leri sırada tutmaz: Python'unki ve Go'nunki tutar, .NET'inki ve Node'unki bunu garanti etmez. Ayrıca MySQL'in UUID() işlevi bir sürüm 1 UUID döndürür; bu UUID Linux ve Windows'ta sunucunun gerçek MAC adresini taşır.

Dillere göre yerleşik UUID işlevleri

Python
import uuid

uuid.uuid4()   # v4
uuid.uuid7()   # v7, Python 3.14+
uuid.uuid5(uuid.NAMESPACE_DNS, "www.example.com")  # v5

uuid7() 42 bitlik bir sayaç tutar, bu yüzden aynı milisaniyedeki UUID'ler sırada kalır.

Sürümler, her dilin kendi belgelerinde listelendiği gibi; işaretler projelerin kendi logolarıdır.

İki UUID aynı olabilir mi?

Teoride evet, pratikte hayır: bir v4 UUID'nin 122 rastgele biti vardır, yani yaklaşık 5,3 × 10³⁶ olası değer. Herhangi ikisinin eşleşmesi için milyarda bir olasılığa ulaşmak üzere yaklaşık 103 trilyon UUID, eşit olasılık için ise yaklaşık 2,7 × 10¹⁸ UUID üretmeniz gerekir.

Bu, doğum günü sınırıdır: N değer arasından seçilen n rastgele değerde tekrar olasılığı yaklaşık olarak 1 − e^(−n(n−1)/2N) olur. Saniyede bir milyar UUID üretildiğinde %50 olasılığa ulaşmak yaklaşık 86 yıl sürer. Gerçek yinelenenler bozuk üreteçlerden gelir: rastgele olmayan bir tohum, rastgele durumuyla birlikte klonlanan bir sanal makine veya elle kopyalanan kimlikler.

v7'de yalnızca aynı milisaniyede oluşturulan UUID'ler eşleşebilir ve 74 rastgele bit bunları birbirinden ayırır. Buradaki üreteç ayrıca bir toplu üretimi tek bir milisaniye içinde de sırada tutar (RFC 9562 §6.2); böylece tek seferde üretilen 10.000 UUID benzersiz ve sıralıdır.

Doğum günü sınırıkendi hesabımız
Herhangi ikisinin aynı olma olasılığı1,1 × 1019 ihtimalde 1p ≈ 9,4 × 10−20

Saniyede bir milyar hızla bu kadarını üretmek 1 saniye sürer.

p ≈ 1 − e^(−n(n−1)/2N); v4 için N = 2¹²², v7 için milisaniye başına 2⁷⁴. RFC 9562 çakışma rakamı vermez: bunlar, sayfanın kullandığı aynı işlevle yaptığımız kendi hesaplarımızdır.

UUID çözücü: bir UUID'nin zaman damgası nasıl okunur?

Bir UUID'yi yukarıdaki UUID çözücü ve doğrulayıcıya, yani Çöz ve doğrula sekmesine yapıştırın: sürümü ve varyantı iki sabit yerden, ardından o sürümün tanımladığı alanları okur. Bir v7 oluşturulduğu milisaniyeyi, bir v1 veya v6 ise 100 nanosaniyeye kadar zamanı, bir saat dizisini ve bir düğüm kimliğini verir.

Çok noktaya yayın biti 0 olan bir v1 veya v6 düğümü, ağ kartının gerçek MAC adresi olabilir; üreticisini MAC adresi sorgulama aracında bulun. Gizliliğe önem veren üreteçler bu biti 1 yapar ve rastgele bir düğüm kullanır; bu üreteç de öyle yapar.

Zaman, üretecin yazdığı zamandır; UUID'nin ne zaman oluşturulduğunun kanıtı değildir. v4 zaman değil yalnızca rastgele bitler taşır; v3, v5 ve v8 ise hash taşır: geri okunacak bir şey yoktur ve bir hash ada geri çevrilemez. Tek seferde 1.000'e kadar UUID'yi denetlemek için bir liste yapıştırın: geçersiz satırlar, yinelenenler ve zamana dayalı UUID'lerin sırada olup olmadığı.

Aynı anı yazmanın iki yoluRFC 9562 · Appendix A
017f22e2-79b0-7cc3-98c4-dc0c0c07398f
  1. unix_ts_ms0x017f22e279b0
  2. 1970'ten beri ms1 645 557 742 000
  3. UTC2022-02-22T19:22:22.000Z
c232ab00-9414-11ec-b3c8-9f6bdeced846
  1. time_high · time_mid · time_low1ec 9414 c232ab00
  2. 1582-10-15'ten beri 100 ns'lik adımlar138 648 505 420 000 000
  3. UTC2022-02-22T19:22:22.0000000Z

Aynı an: RFC 9562'nin örnekleri birlikte oluşturuldu.

Bir v7, 1970'ten beri geçen milisaniyelerle başlar. Bir v1 zamanının düşük kısmını önce saklar; bu yüzden çözücü, 15 Ekim 1582'den itibaren saymadan önce üç parçayı yeniden sıraya koyar.

Ada dayalı UUID'ler: v5 ve v3

Bir v5 UUID, bir ad alanı UUID'si ile bir adın SHA-1 hash'idir; sürüm ve varyant ayarlanarak 128 bite kısaltılır. v3 aynısını MD5 ile yapar. Aynı ad alanı ve ad, her bilgisayarda her zaman aynı UUID'yi verir: bu sayfayı bir UUID v5 oluşturucu olarak kullanmak için yukarıda v5'i seçin.

RFC 9562 dört ad alanı tanımlar: alan adları için DNS, URL, OID ve X.500. Yani DNS ad alanındaki www.example.com, v5 olarak her zaman 2ed6657d-e927-568b-95e1-2665a8aea6a2 olur. Zaten benzersiz bir adı olan bir şeye, bir eşleme tablosu saklamadan kalıcı bir kimlik vermek için ada dayalı UUID'leri kullanın.

v3 yerine v5'i seçin: MD5 daha zayıftır ve RFC 9562 v5'i önerir. İkisi de adı gizlemenin bir yolu değildir: adı tahmin edebilen herkes aynı UUID'yi hesaplayabilir. Buradaki v8 seçeneği, RFC'nin kendi v8 örneğinde olduğu gibi SHA-256'yı aynı şekilde kullanır.

Ad alanı + ad → v5RFC 9562 §5.5
  1. Ad alanı6ba7b810-9dad-11d1-80b4-00c04fd430c8DNS · 16 bayt
  2. Ad"www.example.com"UTF-8 · 15 bayt
  3. SHA-1 özeti, 160 bit2ed6657de927468b55e12665a8aea6a22dee3e35ilk 128 bit tutulur
  4. Elde edilen UUID2ed6657d-e927-568b-95e1-2665a8aea6a2sürüm basamağı 4 → 5 · varyant basamağı 5 → 9
  • DNS6ba7b810…
  • URL6ba7b811…
  • OID6ba7b812…
  • X.5006ba7b814…
RFC 9562'nin kendi v5 örneği: DNS ad alanında www.example.com. Aynı ad alanını ve adı hash'leyen her bilgisayar aynı UUID'yi elde eder.

ULID ile UUID v7 (ve diğer kimlikler)

ULID ve UUID v7'nin ikisi de 48 bitlik bir milisaniye zaman damgasıyla başlar ve zamana göre sıralanır. Fark şu: ULID kalan 80 bitinin tümünü rastgelelik için kullanır ve 26 Base32 karakteriyle yazılır; v7 ise 6 bitini sürüm ve varyanta ayırır ve her UUID sütununa ve kütüphanesine uyar.

Veritabanınız, ORM'niz veya API'niz zaten UUID kullanıyorsa v7 size yeni bir tür gerektirmeden zaman sırası verir. NanoID ve benzeri kısa kimlikler, seçilen uzunlukta rastgele dizelerdir; zaman bilgisi ve standart bir düzenleri yoktur. Her UUID daha kısa da yazılabilir: Base64url'de 22 karakter, Base58'de en fazla 22.

Üç kimlik, her biri 128 bitölçeğe uygun
UUID v7önce zaman, sonra rastgele
36 karakterzamana göre sıralanır
ULIDönce zaman, sonra rastgele
26 karakterzamana göre sıralanır
UUID v4yalnızca rastgele
36 karaktersırası yok
  • 1970'ten beri milisaniye
  • rastgele
  • sürüm ve varyant
UUID v7 ve ULID aynı 48 bitlik milisaniye saatini paylaşır; v7 sürümüne ve varyantına 6 bit ayırır, ULID ise 80 bitin tümünü rastgelelik için kullanır. Bir v4 yalnızca rastgeledir; Base64url'de her UUID 22 karakterdir.

UUID'ler token olarak kullanılmak için güvenli mi?

Hayır. RFC 9562, UUID'lerin tahmin edilmesinin zor olduğunu varsaymamayı ve birini asla güvenlik yetkisi (security capability) olarak kullanmamayı söyler: şifre sıfırlama bağlantısı veya API anahtarı gibi, elde bulundurulması erişim sağlayan bir kimlik.

İyi bir üreteçten gelen bir v4 rastgeledir, ancak bir v1, v6 veya v7 oluşturulma zamanını açığa vurur, bir v3 veya v5 ise adından yeniden hesaplanabilir. Gizli bilgiler için bu iş için yapılmış bir token (örneğin kriptografik bir üreteçten 256 rastgele bit) kullanın ve her istekte yetkiyi denetleyin. Erişim ayrıca denetlendiğinde UUID'ler herkese açık kimlik olarak kullanılabilir.

KimlikOnu gören herkesin öğrenebileceğiGizli bilgi olarak
v1, v6Ne zaman oluşturulduğu ve belki ağ kartının MAC adresiHayır
v7Oluşturulduğu milisaniyeHayır
v5, v3Yeni bir şey yok, ama tahmin edilen bir ad aynı UUID'yi verirHayır
v4Sağlam bir üreteçten geliyorsa hiçbir şeyHayır
256 bitlik tokenHiçbir şey: gizli bilgiler için yapılmıştırEvet
RFC 9562, UUID'lerin tahmin edilmesinin zor olduğunu varsaymamayı ve onları güvenlik yetkisi olarak kullanmamayı söyler. Gizli bilgiler için kriptografik bir üreteçten gelen bir token kullanın ve her istekte erişimi denetleyin.

UUID oluşturucu: sorular ve cevaplar

UUID nasıl oluşturulur?

Bu sayfayı açın: rastgele bir UUID v4 kopyalanmaya hazırdır ve Yeni UUID bir tane daha oluşturur. Sayfayı bir UUID v7 oluşturucu olarak kullanmak için v7'yi seçin, tek seferde 10.000'e kadar üretmek için bir adet girin ve süslü parantez veya Base64url gibi bir biçim seçin. Kodda JavaScript'te crypto.randomUUID(), Python'da uuid.uuid4() ve C#'ta Guid.NewGuid() tek satırda birer v4 oluşturur.

UUID neyin kısaltmasıdır?

Universally Unique Identifier, yani Evrensel Benzersiz Tanımlayıcı. 919108f7-52d1-4320-9bac-f847db4148a8 gibi 36 karakterle yazılan 128 bitlik bir değerdir; bilgisayarlar onu merkezi bir kayıt olmadan birbirinden bağımsız olarak üretir ve yine de benzersiz olmasını bekler. Onu RFC 9562 tanımlar. Microsoft aynı değere GUID, yani Globally Unique Identifier (Küresel Benzersiz Tanımlayıcı) der.

GUID ile UUID aynı şey mi?

Pratikte evet: aynı 128 bit, aynı metin biçimi; Guid.NewGuid() de standart bir sürüm 4 UUID üretir. İki ayrıntı farklıdır. .NET ilk üç grubu little-endian saklar, bu yüzden ham bayt dizileri farklı bir sırayla çıkar; SQL Server da uniqueidentifier değerlerini önce son gruba göre sıralar. GUID oluşturmak için bu sayfayı rastgele bir GUID üretici olarak kullanın: kopyaladığınız metin her iki dünyada da çalışır.

Hangi UUID sürümünü kullanmalıyım?

Veritabanı anahtarları ve sıralanan her şey için sürüm 7, çünkü oluşturulma zamanıyla başlar ve indeksleri derli toplu tutar. Kimliğin ne zaman oluşturulduğunu açığa vurmaması gerekiyorsa sürüm 4. Aynı adın her zaman aynı kimliğe karşılık gelmesi gerekiyorsa sürüm 5. Yeni işlerde v1'den kaçının: RFC 9562 onun yerine v7'yi önerir ve bir v1 gerçek bir MAC adresi taşıyabilir.

İki UUID hiç aynı olabilir mi?

Üreteç sağlamsa yalnızca astronomik derecede küçük bir olasılıkla. Bir v4'ün 122 rastgele biti vardır; yaklaşık 103 trilyon UUID, tek bir tekrar için milyarda bir olasılık verir, %50 olasılık içinse yaklaşık 2,7 × 10¹⁸ UUID gerekir. Gerçek hayattaki yinelenenler matematikten değil; hatalı üreteçlerden, klonlanmış sanal makinelerden veya kopyalanmış verilerden gelir.

Bir UUID çözülebilir mi?

Kısmen. Her UUID sürümünü ve varyantını gösterir. Bir v7 ayrıca oluşturulduğu milisaniyeyi, bir v1 veya v6 ise 100 nanosaniyeye kadar zamanı, bir saat dizisini ve bazen gerçek bir MAC adresi olan bir düğüm kimliğini açığa vurur. Bir v4 yalnızca rastgele bitler taşır; v3 ve v5 ise ada geri çevrilemeyen hash'ler taşır. Birini Çöz ve doğrula sekmesine yapıştırın.

Bir UUID kaç karakterdir?

128 bit, yani 16 bayt. Metin olarak 36 karakterdir: 8-4-4-4-12 gruplarında 32 onaltılık basamak ve 4 tire. Tiresiz 32 karakter, süslü parantez içinde 38, urn:uuid: önekiyle 45, Base64url'de 22, ondalık bir tam sayı olarak ise en fazla 39 basamaktır. Mümkünse onu metin yerine yerel bir UUID türü veya 16 bayt olarak saklayın.

Boş GUID veya Nil UUID nedir?

128 bitin tümünün sıfır olduğu değer: 00000000-0000-0000-0000-000000000000. RFC 9562 ona Nil UUID der; .NET'teki Guid.Empty de aynı değerdir ve çoğu zaman kimlik atanmadığını belirtmek için kullanılır. RFC 9562 ayrıca tümüyle birlerden oluşan Max UUID'yi, yani ffffffff-ffff-ffff-ffff-ffffffffffff değerini bir işaret değeri (sentinel) olarak tanımlar (.NET 9: Guid.AllBitsSet). İkisi de rastgele değildir, bu yüzden onları asla gerçek kimlik olarak kullanmayın.

UUID v7 sıralanabilir mi?

Evet. İlk 48 biti milisaniye cinsinden Unix zamanıdır; bu yüzden v7 UUID'leri metin veya bayt olarak sıralamak onları milisaniyesine kadar oluşturulma zamanına göre sıralar. Aynı milisaniye içinde sıra üretece bağlıdır: bu üreteç, RFC 9562 bölüm 6.2'de anlatıldığı gibi bir toplu üretimi kesin olarak artan sırada tutar. İstisna SQL Server'ın uniqueidentifier türüdür: önce son grubu karşılaştırır.

UUID'yi şifre veya erişim token'ı olarak kullanmak güvenli mi?

Hayır. RFC 9562, UUID'lerin tahmin edilmesinin zor olduğunu varsaymamak ve onları güvenlik yetkisi olarak kullanmamak konusunda uyarır. Zamana dayalı sürümler ne zaman oluşturulduklarını açığa vurur, ada dayalı olanlar ise yeniden hesaplanabilir. Gizli bilgiler için kriptografik bir üreteçten gelen rastgele bir token kullanın ve UUID'leri, erişimi ayrıca denetlenen herkese açık kimlikler olarak görün. Şifreler için şifre oluşturucuyu kullanın.

Burada oluşturulan UUID'ler bir yere gönderiliyor mu?

Hayır. Tarayıcınızda, onun kriptografik olarak güvenli rastgele üreteci olan crypto.getRandomValues ile oluşturulurlar; yapıştırılan UUID'ler de cihazınızda çözülür. Oluşturduğunuz veya yapıştırdığınız hiçbir şey bize ya da başka birine gönderilmez. Bir paylaşım bağlantısı yalnızca sizin seçtiklerinizi taşır: sürüm, adet ve biçim, v5 için ad veya çözücüye yapıştırdığınız UUID'ler; bu yüzden bağlantıyı, içindekileri paylaşırken göstereceğiniz özenle paylaşın.

Eksik bir şey mi var?Bir özellik ya da yeni bir araç önerin