# UUID oluşturucu

> UUID (Evrensel Benzersiz Tanımlayıcı) oluşturun, tüm sürümleri (v1, v3-v7) destekler. Binlerce UUID'yi tek seferde üretin. Ücretsiz ve tarayıcınızda çalışır.

URL: https://acrafto.com/tr/uuid-uretici/

Tools are interactive browser apps; there is no public API, no endpoints to call and no server-side processing. To use a tool, open its HTML page in a browser.

## UUID Nedir?

UUID (Evrensel Benzersiz Tanımlayıcı), bilgisayar sistemlerinde bilgiyi benzersiz bir şekilde tanımlamak için kullanılan 128 bitlik bir tanımlayıcıdır. UUID, RFC 4122’ye göre standartlaştırılmıştır ve muazzam entropisi sayesinde pratik olarak sıfır çakışma olasılığı garanti eder – bu, bağımsız olarak oluşturulan iki UUID’nin neredeyse kesinlikle benzersiz olacağı anlamına gelir.

UUID’nin standart bir formatı vardır: `xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx`, burada her `x` bir onaltılık rakamdır (0-9, a-f), `M` UUID sürümünü ve `N` varyantı belirtir.

## UUID Sürümleri

### UUID v1 (Zaman Damgası + MAC Adresi)

UUID v1, mevcut zaman damgasına (timestamp) ve rastgele bir değere (tarayıcıda MAC adresi yerine) dayanır. 15 Ekim 1582’den (Gregoryen takvimi) itibaren 100 nanosaniyelik aralıkları kullanır.

**Kullanım Alanları:**

- UUID’lerin kronolojik olarak sıralanması gereken durumlar
- Hata ayıklama ve günlük kaydı (UUID, oluşturulma zamanı bilgisini içerir)
- Zaman senkronizasyonlu dağıtılmış sistemler

**Örnek:** `6ba7b810-9dad-11d1-80b4-00c04fd430c8`

**Avantajları:**

- UUID’ler oluşturulma zamanına göre kronolojik olarak sıralanabilir
- Denetim ve hata ayıklama için kullanışlıdır
- Zaman damgası bilgisi içerir

**Dezavantajları:**

- Potansiyel güvenlik riski – zaman damgası içerir
- Tarayıcıda gerçek MAC adresini içermez (rastgele bir değerle değiştirilir)
- Kötü DB lokalitesi (zaman damgası düşük dereceli bitlerde bulunur)

### UUID v3 (MD5 Özeti)

UUID v3, bir UUID ad alanı ve adının MD5 özeti kullanılarak oluşturulur. Deterministiktir – aynı ad alanı + ad her zaman aynı UUID’yi oluşturur.

**Kullanım Alanları:**

- URL’leri, DNS adlarını veya diğer tanımlayıcıları UUID’ye dönüştürme
- Yeniden üretilebilir UUID’lere ihtiyaç duyduğunuz durumlar
- Farklı kimlik sistemleri arasında eşleme

**Örnek:** `a3bb189e-8bf9-3888-9912-ace4e6543002`

**Avantajları:**

- Deterministik (aynı girdi = aynı çıktı)
- Bilinen tanımlayıcıları dönüştürmek için idealdir
- Farklı girdiler için çakışma olmaz

**Dezavantajları:**

- MD5 eski bir algoritmadır (v5’i tercih edin)
- Ad alanı ve ad gerektirir
- Orijinal girdiyi geri almak mümkün değildir

### UUID v4 (Rastgele) - ÖNERİLEN

En çok kullanılan UUID sürümü. UUID v4, kriptografik olarak güvenli bir rastgele sayı üreteci (`crypto.getRandomValues()`) kullanılarak tamamen rastgele oluşturulur.

**Kullanım Alanları:**

- Veritabanı birincil anahtarları
- Oturum kimlikleri (session IDs)
- Benzersiz dosya adları
- API belirteçleri (API tokens)
- Garanti edilmiş benzersiz bir kimliğe ihtiyaç duyduğunuz genel amaçlar

**Örnek:** `f47ac10b-58cc-4372-a567-0e02b2c3d479`

**Avantajları:**

- Maksimum entropi ve güvenlik
- Zamana veya sistem parametrelerine bağımlılık yok
- En basit uygulama

**Çakışma Olasılığı:** Saniyede 1 milyar UUID’nin 100 yıl boyunca üretilmesi durumunda, çakışma olasılığı yaklaşık %0,00000006’dır.

### UUID v5 (SHA-1 Özeti)

UUID v5, v3 ile aynıdır, ancak MD5 yerine SHA-1 kullanır. v3’e daha modern ve güvenli bir alternatiftir.

**Kullanım Alanları:**

- v3 ile aynı, ancak daha iyi güvenlik ile
- Yeni projeler için v3 yerine tercih edilir
- URL’lerden, DNS adlarından, OID’lerden, X.500 DN’lerden UUID oluşturma

**Örnek:** `886313e1-3b8a-5372-9b90-0c9aee199e5d`

**Avantajları:**

- Deterministik
- SHA-1, MD5’ten daha güçlüdür
- Sistemler arasında eşleme için uygundur

**Dezavantajları:**

- SHA-1 de eski kabul edilir (ancak MD5’ten hala daha güvenlidir)
- Ad alanı ve ad gerektirir

### UUID v6 (Sıralı Zaman Damgası)

UUID v6, daha iyi veritabanı indekslemesi için yeniden düzenlenmiş zaman bitlerine sahip v1’in geliştirilmiş bir sürümüdür. Veritabanlarındaki lokalite sorunlarını çözmek için tasarlanmıştır.

**Kullanım Alanları:**

- Zaman sıralamalı veritabanı birincil anahtarları
- Kronolojik sıralama ve veritabanı performansı gerektiren sistemler
- v1’e daha modern bir alternatif

**Örnek:** `1ec9414c-232a-6b00-b3c8-9e6bdeced846`

**Avantajları:**

- v1’den daha iyi veritabanı lokalitesi (zaman damgası yüksek dereceli bitlerde)
- Kronolojik sıralama
- UUID standardıyla uyumlu

**Dezavantajları:**

- v1/v4’e göre daha az kullanılır
- Hala zaman bilgisi içerir (güvenlik riski)

### UUID v7 (Unix Zaman Damgası)

UUID v7, Unix zaman damgasını (1970’ten bu yana milisaniyeler) + rastgele bitleri kullanır. En iyi veritabanı lokalitesine sahip en yeni UUID sürümüdür.

**Kullanım Alanları:**

- Modern veritabanı birincil anahtarları
- Performans + zaman sıralaması gerektiren sistemler
- Yeni projelerde v1/v6 yerine geçer

**Örnek:** `017f22e2-79b0-7cc3-98c4-dc0c0c07398f`

**Avantajları:**

- Tüm sürümler arasında en iyi veritabanı lokalitesi
- Unix zaman damgası standarttır
- Rastgelelik ve zaman sıralaması avantajlarını birleştirir

**Dezavantajları:**

- Nispeten yeni bir spesifikasyon (RFC 4122bis)
- Eski sistemlerde daha az desteklenir

## Hangi UUID Sürümünü Kullanmalısınız?

### Karar Rehberi

**Maksimum güvenlik ve rastgelelik mi istiyorsunuz?** → **UUID v4** kullanın (en yaygın seçenek)

**Zaman sıralaması ve veritabanı performansı mı istiyorsunuz?** → **UUID v7** (modern) veya **UUID v6** (standart) kullanın

**Mevcut tanımlayıcılardan yeniden üretilebilir UUID’ler mi istiyorsunuz?** → **UUID v5** (SHA-1) veya **UUID v3** (MD5, eski) kullanın

**Zaman damgası ve denetim kaydı mı istiyorsunuz?** → **UUID v1** kullanın (eski, daha kötü veritabanı performansı)

### Veritabanları

**Yeni projeler için:** UUID v7 veya v4

- **v7** zaman sıralaması + performans için idealdir
- **v4** zaman bilgisi olmadan maksimum rastgelelik için

**Eski sistemler için:** UUID v1 veya v6

- **v6**, v1’den daha iyi veritabanı lokalitesine sahiptir
- **v1** geniş çapta desteklenir

**UUID’nin birincil anahtar olarak avantajları:**

- **Küresel Benzersizlik** – Farklı veritabanlarındaki verileri çakışma olmadan birleştirebilirsiniz
- **Güvenlik** – Sıralı kimliklerin (1, 2, 3…) aksine, sonraki değerler tahmin edilemez
- **Dağıtılmış Sistemler** – UUID’ler birden fazla sunucuda koordinasyon olmadan bağımsız olarak oluşturulabilir
- **Veritabanı Birleştirme** – İki veritabanı birleştirildiğinde çakışmalar oluşmaz

**Dezavantajları:**

- Daha büyük boyut (bir tamsayı için 4-8 bayta karşılık 16 bayt)
- Bazı veritabanlarında daha yavaş indeksleme (daha iyi performans için v6/v7 kullanın)
- İnsanlar için daha az okunabilir

### API ve Web Hizmetleri

- **REST API** – Kaynaklar için benzersiz tanımlayıcılar
- **GraphQL** – Düğümler için küresel tanımlayıcılar
- **Webhook’lar** – İstek ve yanıt takibi
- **Belirteçler** – Oturum Kimlikleri (Session IDs), yenileme belirteçleri (refresh tokens)

### Dosyalar ve Depolama

- **Dosya Adları** – Yükleme sırasında çakışmaları önleme
- **S3/Bulut Depolama** – Nesneler için benzersiz yollar
- **Önbellek Anahtarları** – Önbellek sistemlerindeki tanımlayıcılar

### Frontend Uygulamaları

- **React/Vue bileşenleri** – Listeler için benzersiz anahtarlar
- **Geçici Kimlikler** – Veritabanına kaydetmeden önceki kimlikler
- **Yerel Depolama** – Kayıtlı veriler için anahtarlar
- **Çevrimdışı öncelikli uygulamalar** – Sunucuya bağlanmadan kimlik oluşturma

## Oluşturucunun Gelişmiş Özellikleri

### Özel Zaman Damgası ile UUID Oluşturma

Zaman tabanlı sürümler (v1, v6, v7) için, tarih-saat seçici kullanarak herhangi bir zaman damgası seçebilirsiniz. Bu durumlar için kullanışlıdır:

**Test Etme:**

- Geçmişte oluşturulan UUID’leri simüle etme
- Veritabanlarında zaman sıralamasını test etme
- Hata ayıklama için UUID’leri yeniden üretme

**Veri Geçişi:**

- Tarihsel zaman damgalarıyla UUID’ler oluşturma
- Doğru zaman damgası değerleriyle verileri doldurma (backfilling)
- Farklı zaman dilimlerinden veri içe aktarma

**Denetim ve Uyumluluk:**

- Kayıt oluşum zamanına göre UUID’leri yeniden yapılandırma
- Geriye dönük tanımlayıcı oluşturma

**Kullanım Örneği:**

1. v1, v6 veya v7 sürümünü seçin
2. Tarih-saat seçiciyi kullanarak tarih ve saati ayarlayın
3. Kendi zaman damganızla UUID oluşturun

### Karma Tabanlı UUID (v3, v5)

Deterministik UUID’ler için v3 (MD5) veya v5 (SHA-1) sürümlerini kullanabilirsiniz:

**Nasıl Kullanılır:**

1. Tanımlayıcınızın türüne göre ad alanını seçin
2. Adı/değeri girin
3. UUID oluşturun

**Örnekler:**

| Ad Alanı | Ad (Girdi) | Kullanım |
| --- | --- | --- |
| DNS | `example.com` | Alan adını UUID’ye dönüştürme |
| DNS | `google.com` | Her web sitesinin benzersiz bir UUID’si vardır |
| URL | `https://example.com/page` | URL’yi UUID’ye dönüştürme |
| URL | `https://api.example.com/users/123` | API uç noktası olarak UUID |
| OID | `1.3.6.1.4.1.343` | Nesne Tanımlayıcıyı UUID’ye dönüştürme |
| X.500 | `CN=John Doe,O=Company` | Ayırt Edici Adı UUID’ye dönüştürme |

**Önemli Özellikler:**

- ✅ **Deterministik**: Aynı girdi = her zaman aynı UUID
- ✅ **Yeniden Üretilebilir**: UUID’yi istediğiniz zaman yeniden oluşturabilirsiniz
- ✅ **Tutarlı**: Farklı sistemler arasında aynı UUID
- ❌ **Çözülemez**: UUID’den orijinal adı geri almak mümkün değildir
- ℹ️ **Tek UUID**: v3/v5 için her zaman yalnızca bir UUID oluşturulur (aynı girdi = aynı çıktı)

**Pratik Kullanım:**

```
// Örnek: URL'yi UUID v5'e dönüştürme
Namespace: URL
Ad: https://example.com/api/users/123
Sonuç: 886313e1-3b8a-5372-9b90-0c9aee199e5d

// Aynı girdi = her zaman aynı UUID
Namespace: DNS
Ad: google.com
Sonuç: google.com için her zaman aynı UUID
```

## UUID’yi Güvenli Bir Şekilde Nasıl Kullanılır?

### Kriptografik Güvenlik

Oluşturucumuz, kriptografik olarak güvenli bir rastgele sayı üreteci olan `crypto.getRandomValues()` kullanır. Tahmin edilebilir ve güvenlik amaçları için uygun olmayan `Math.random()`’ın aksine, `crypto.getRandomValues()` aşağıdaki durumlar için uygun gerçek entropi sağlar:

- Güvenlik belirteçleri oluşturma
- Oturum Kimlikleri (Session IDs)
- API anahtarları
- Kriptografik uygulamalar

### UUID Sürümlerinin Karşılaştırması

| Sürüm | Temel | Çakışma | Zaman Sıralaması | DB Performansı | Kullanım |
| --- | --- | --- | --- | --- | --- |
| v1 | Zaman Damgası + MAC | Düşük | ✅ Evet | ❌ Daha Kötü | Eski, denetim |
| v3 | MD5 Özeti | Yok (deterministik) | ❌ Hayır | ⚠️ Orta | Dönüşümler (eski) |
| v4 | Rastgele | Aşırı Düşük | ❌ Hayır | ⚠️ Orta | Genel kullanım |
| v5 | SHA-1 Özeti | Yok (deterministik) | ❌ Hayır | ⚠️ Orta | Dönüşümler (önerilen) |
| v6 | Sıralı Zaman Damgası | Düşük | ✅ Evet | ✅ Daha İyi | Zamanlı modern DB’ler |
| v7 | Unix Zaman Damgası | Düşük | ✅ Evet | ✅ En İyi | Yeni projeler |

### UUID ile Diğer Tanımlayıcılar Karşılaştırması

| Tip | Boyut | Çakışma | Zaman Sıralaması | Kullanım |
| --- | --- | --- | --- | --- |
| Otomatik Artan Kimlik | 4-8 bayt | Tablo içinde garantili benzersizlik | ❌ | Basit uygulamalar, yerel DB |
| UUID v4 | 16 bayt | Pratik olarak imkansız | ❌ | Dağıtılmış sistemler, API |
| UUID v7 | 16 bayt | Pratik olarak imkansız | ✅ | Performanslı modern DB’ler |
| ULID | 16 bayt | Pratik olarak imkansız | ✅ | UUID + sözlükbilimsel sıralama |
| Snowflake ID | 8 bayt | Doğru yapılandırmada garantili benzersizlik | ✅ | Twitter, dağıtılmış sistemler |
| NanoID | Yapılandırılabilir | Uzunluğa bağlı | ❌ | URL dostu Kimlikler |

## Farklı Dillerde Uygulama

### JavaScript/TypeScript

```
// UUID v4 - En basit yol (modern tarayıcılar)
const uuid = crypto.randomUUID();

// UUID v4 - Manuel uygulama
function generateUUIDv4() {
  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
    const r = (crypto.getRandomValues(new Uint8Array(1))[0] & 0x0f) >> (c === 'x' ? 0 : 2);
    const v = c === 'x' ? r : (r & 0x3) | 0x8;
    return v.toString(16);
  });
}

// UUID v7 - Veritabanları için önerilir
function generateUUIDv7() {
  const timestamp = Date.now();
  const timeHi = (timestamp >> 16).toString(16).padStart(8, '0');
  const timeLow = (timestamp & 0xFFFF).toString(16).padStart(4, '0');

  const randomBytes = crypto.getRandomValues(new Uint8Array(10));
  const randomHex = Array.from(randomBytes)
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');

  return `${timeHi}-${timeLow}-7${randomHex.substr(0, 3)}-${randomHex.substr(3, 4)}-${randomHex.substr(7)}`;
}
```

### Python

```
import uuid

# UUID v4
uuid_v4 = str(uuid.uuid4())
# Output: '6ba7b810-9dad-11d1-80b4-00c04fd430c8'

# UUID v1
uuid_v1 = str(uuid.uuid1())
```

### Java

```
import java.util.UUID;

// UUID v4
String uuidV4 = UUID.randomUUID().toString();
```

### PHP

```
// UUID v4 (PHP 7+)
function generateUUID() {
    return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
        mt_rand(0, 0xffff), mt_rand(0, 0xffff),
        mt_rand(0, 0xffff),
        mt_rand(0, 0x0fff) | 0x4000,
        mt_rand(0, 0x3fff) | 0x8000,
        mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
    );
}
```

### C#

```
using System;

// UUID v4
Guid uuid = Guid.NewGuid();
string uuidString = uuid.ToString();
```

## En İyi Uygulamalar

### Veritabanında UUID Depolama

**PostgreSQL:**

```
CREATE TABLE users (
    id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
    email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT NOW()
);
```

**MySQL 8.0+:**

```
CREATE TABLE users (
    id BINARY(16) PRIMARY KEY DEFAULT (UUID_TO_BIN(UUID())), email VARCHAR(255) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
```

**İpucu:** MySQL’de UUID’leri yer kazanmak ve daha hızlı indeksleme için `CHAR(36)` yerine `BINARY(16)` olarak depolayın.

### UUID Doğrulama

```
function isValidUUID(uuid) {
  const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
  return regex.test(uuid);
}
```

### UUID Dönüşümü

```
// Tireleri kaldırma
const compact = uuid.replace(/-/g, '');

// Tireleri geri ekleme
function formatUUID(compactUuid) {
  return [
    compactUuid.substring(0, 8),
    compactUuid.substring(8, 12),
    compactUuid.substring(12, 16),
    compactUuid.substring(16, 20),
    compactUuid.substring(20, 32)
  ].join('-');
}
```

## Sorun Giderme

### UUID v3/v5 Çalışmıyor

**Sorun:** v3 veya v5 seçtikten sonra hiçbir şey oluşmuyor

**Çözüm:**

1. ✅ **“Ad” alanını doldurduğunuzdan** emin olun - bu zorunludur!
2. ✅ Girişinizin türüne göre doğru ad alanını seçin
3. ✅ Geçerli giriş örnekleri:
   - DNS: `example.com`, `google.com`
   - URL: `https://example.com/page`
   - Herhangi bir metin: `my-application-v1`

**İpucu:** Önce `test` gibi basit bir değer ve DNS ad alanı deneyin.

### Zaman tabanlı UUID (v1, v6, v7) garip bir zamana sahip

**Sorun:** Oluşturulan UUID beklenmedik bir zaman damgasına sahip

**Çözüm:**

1. ✅ Tarih-saat seçiciyi kontrol edin - doğru zaman ayarlı mı?
2. ✅ Tarih-saat seçici yerel saat diliminizi kullanır
3. ✅ Mevcut zaman için tarih-saat seçiciyi boş bırakın

### UUID Kopyalanamıyor

**Sorun:** “Tümünü Kopyala” düğmesi çalışmıyor

**Çözüm:**

1. ✅ UUID oluşturduğunuzdan emin olun (boş değiller)
2. ✅ Bazı tarayıcılar pano API’si için HTTPS gerektirir
3. ✅ Alternatif olarak, metin alanındaki metni seçin ve manuel olarak kopyalayın (Ctrl+C)

## Sıkça Sorulan Sorular (SSS)

### UUID çakışması meydana gelebilir mi?

Teorik olarak evet, ancak olasılık astronomik derecede düşüktür. Saniyede 1 milyar v4 UUID'nin 100 yıl boyunca oluşturulması durumunda, çakışma olasılığı yaklaşık %0,00000006'dır. Pratikte çakışma asla yaşanmaz.

### UUID veritabanında birincil anahtar olarak uygun mu?

Kullanım durumuna bağlıdır. UUID, dağıtılmış sistemler ve küresel benzersizliğe ihtiyaç duyduğunuz durumlar için idealdir. Tek bir veritabanına sahip basit uygulamalar için otomatik artan birincil anahtar daha verimli olabilir.

### Bu araçla oluşturulan UUID'ler güvenli mi?

Evet, kriptografik olarak güvenli rastgele değerler sağlayan Web Kripto API'sini (\`crypto.getRandomValues()\`) kullanıyoruz. Her şey yerel olarak tarayıcınızda gerçekleşir.

### UUID sürümleri arasındaki fark nedir?

\- \*\*v1\*\*: Zaman damgası + MAC/rastgele - kronolojik sıralama, daha kötü DB performansı - \*\*v3/v5\*\*: Karma tabanlı - deterministik, bilinen tanımlayıcıları dönüştürmek için - \*\*v4\*\*: Rastgele - en güvenli, en çok kullanılan - \*\*v6\*\*: Yeniden düzenlenmiş zaman damgası - v1'den daha iyi DB performansı - \*\*v7\*\*: Unix zaman damgası - en iyi DB performansı + zaman sıralaması

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

Çoğu durum için \*\*v4\*\*'ü (rastgele) kullanın. Zaman sıralaması olan veritabanları için \*\*v7\*\*'yi (modern) veya \*\*v6\*\*'yı (standart) kullanın. Bilinen tanımlayıcıları (URL, DNS) dönüştürmek için \*\*v5\*\*'i (SHA-1) kullanın.

### UUID'yi belirteçler ve API anahtarları için kullanabilir miyim?

UUID v4, oturum kimlikleri ve benzeri belirteçler için uygundur. API anahtarları için daha uzun rastgele dizeler (örneğin 256-bit değerler) veya özel kütüphaneler kullanmayı düşünün.

### UUID'ler ne kadar büyüktür?

UUID 128 bittir (16 bayt). Tireli dize formatında 36 karakter yer kaplar. Tireler olmadan 32 onaltılık karakterdir.

## UUID Alternatifleri

### ULID (Evrensel Benzersiz Sözlükbilimsel Olarak Sıralanabilir Tanımlayıcı)

- 128-bit kimlik (UUID ile aynı)
- Oluşturulma zamanına göre sözlükbilimsel olarak sıralanabilir
- Daha kompakt gösterim (36 karakter yerine 26 karakter)
- Büyük/küçük harfe duyarsız base32 kodlama

**Örnek:** `01ARZ3NDEKTSV4RRFFQ69G5FAV`

### NanoID

- UUID’den daha küçük boyut (standart olarak 21 karakter)
- URL dostu (özel karakterler olmadan)
- Daha hızlı oluşturma
- Yapılandırılabilir uzunluk ve alfabe

**Örnek:** `V1StGXR8_Z5jdHi6B-myT`

### Snowflake Kimliği (Twitter)

- 64-bit kimlik (UUID’den daha küçük)
- Zamana göre sıralanabilir
- Çalışan kimliği ve sıra numarası içerir
- Merkezi bir yapılandırma gerektirir

**Örnek:** `1234567890123456789`

## Performans ve Optimizasyon

### Oluşturma Hızı

Oluşturucumuz şunları oluşturabilir:

- **1 UUID:** < 1 ms
- **100 UUID:** ~10-20 ms
- **1000 UUID:** ~100-200 ms

### Performans İpuçları

1. **Toplu Oluşturma** – Çok sayıda UUID’ye ihtiyacınız varsa, tek tek yerine toplu olarak oluşturun
2. **DB’de Depolama** – Hızlı arama için UUID sütunlarını indeksleyin
3. **Sıkıştırma** – UUID’leri dize (36 bayt) yerine ikili biçimde (16 bayt) depolayın
4. **Önbellekleme** – Bazı durumlarda, UUID’leri önceden oluşturabilir ve önbelleğe alabilirsiniz

## Geliştiriciler İçin

### UUID v4 Yapısı

```
xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx
|        |    |    |    |
|        |    |    |    └─ 48 bit rastgele veri (node)
|        |    |    └────── Varyant ile 16 bit rastgele veri (clock_seq)
|        |    └─────────── 12 bit rastgele veri + 4 bit sürüm (time_hi_and_version)
|        └──────────────── 16 bit rastgele veri (time_mid)
└───────────────────────── 32 bit rastgele veri (time_low)
```

- Sürüm (4 bit): her zaman `0100` (ikili) = `4` (onaltılık)
- Varyant (2-3 bit): RFC 4122 için her zaman `10` (ikili)

### UUID Test Etme

```
// Jest test
describe('UUID Generator', () => {
  test('generates valid UUID v4', () => {
    const uuid = generateUUIDv4();
    const regex = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
    expect(regex.test(uuid)).toBe(true);
  });

  test('generates unique UUIDs', () => {
    const uuid1 = generateUUIDv4();
    const uuid2 = generateUUIDv4();
    expect(uuid1).not.toBe(uuid2);
  });
});
```

## Güvenlik Yönleri

### UUID ile Yapılmaması Gerekenler

❌ **Hassas uygulamalar için UUID v1 kullanmayın** – Zaman damgası içerir, bu bir güvenlik riski olabilir

❌ **UUID oluşturmak için `Math.random()` kullanmayın** – Kriptografik olarak güvenli değildir

❌ **Yetkilendirme için UUID’ye güvenmeyin** – UUID tahmin edilebilir (aşırı derecede düşük olasılıkla bile olsa)

❌ **UUID’leri şifrelemeden çerezlerde saklamayın** – İmzalı çerezler veya JWT kullanın

### Yapılması Gerekenler

✅ **Çoğu durum için UUID v4 kullanın** – En yüksek entropi ve güvenlik

✅ **UUID’yi diğer güvenlik önlemleriyle birleştirin** – Oturum yönetimi için HTTPS, HttpOnly çerezleri ve kısa süre son kullanma kullanın

✅ **UUID’yi sunucuda doğrulayın** – Her zaman UUID’nin formatını ve sürümünü kontrol edin

✅ **Kriptografik olarak güvenli rastgelelik kaynakları kullanın** – Tarayıcıda `crypto.getRandomValues()`, Linux’ta `/dev/urandom`

## İlginç Bilgiler

- **Mümkün olan UUID v4 sayısı:** 2^122 ≈ 5.3 × 10^36 (340 undecillion)
- **Gerekli çakışma:** %50 çakışma olasılığı için 2.71 × 10^18 UUID (2.71 katrilyon) oluşturmanız gerekir
- **Tüm olası UUID’lerin boyutu:** Her UUID’yi 16 bayt olarak depolasaydık, tüm alan 85 zettabayt (85 milyar terabayt) yer kaplardı
- **Kökeni:** UUID, 1990 yılında DCE’nin (Dağıtılmış Hesaplama Ortamı) bir parçası olarak standartlaştırıldı

## Other languages

- Čeština (cs): [Generátor UUID](https://acrafto.com/cs/generator-uuid/) ([Markdown](https://acrafto.com/cs/generator-uuid/index.md))
- Slovenčina (sk): [UUID generátor](https://acrafto.com/sk/generator-uuid/) ([Markdown](https://acrafto.com/sk/generator-uuid/index.md))
- English (en): [UUID Generator](https://acrafto.com/en/uuid-generator/) ([Markdown](https://acrafto.com/en/uuid-generator/index.md))
- Deutsch (de): [UUID Generator](https://acrafto.com/de/uuid-generator/) ([Markdown](https://acrafto.com/de/uuid-generator/index.md))
- Français (fr): [Générateur UUID](https://acrafto.com/fr/generateur-uuid/) ([Markdown](https://acrafto.com/fr/generateur-uuid/index.md))
- Español (es): [Generador de UUID](https://acrafto.com/es/generador-uuid/) ([Markdown](https://acrafto.com/es/generador-uuid/index.md))
- Italiano (it): [Generatore UUID](https://acrafto.com/it/generatore-uuid/) ([Markdown](https://acrafto.com/it/generatore-uuid/index.md))
- Português (pt): [Gerador de UUID](https://acrafto.com/pt/gerador-uuid/) ([Markdown](https://acrafto.com/pt/gerador-uuid/index.md))
- Nederlands (nl): [UUID generator](https://acrafto.com/nl/uuid-generator/) ([Markdown](https://acrafto.com/nl/uuid-generator/index.md))
- Polski (pl): [Generator UUID](https://acrafto.com/pl/generator-uuid/) ([Markdown](https://acrafto.com/pl/generator-uuid/index.md))
- Română (ro): [Generator UUID](https://acrafto.com/ro/generator-uuid/) ([Markdown](https://acrafto.com/ro/generator-uuid/index.md))
- Magyar (hu): [UUID generátor](https://acrafto.com/hu/uuid-generator/) ([Markdown](https://acrafto.com/hu/uuid-generator/index.md))
- Ελληνικά (el): [Γεννήτρια UUID](https://acrafto.com/el/gennitria-uuid/) ([Markdown](https://acrafto.com/el/gennitria-uuid/index.md))
- Български (bg): [UUID генератор](https://acrafto.com/bg/uuid-generator/) ([Markdown](https://acrafto.com/bg/uuid-generator/index.md))
- Hrvatski (hr): [Generator UUID](https://acrafto.com/hr/generator-uuid/) ([Markdown](https://acrafto.com/hr/generator-uuid/index.md))
- Slovenščina (sl): [UUID generator](https://acrafto.com/sl/generator-uuid/) ([Markdown](https://acrafto.com/sl/generator-uuid/index.md))
- Eesti (et): [UUID generaator](https://acrafto.com/et/uuid-generaator/) ([Markdown](https://acrafto.com/et/uuid-generaator/index.md))
- Latviešu (lv): [UUID ģenerators](https://acrafto.com/lv/uuid-generator/) ([Markdown](https://acrafto.com/lv/uuid-generator/index.md))
- Lietuvių (lt): [UUID generatorius](https://acrafto.com/lt/uuid-generatorius/) ([Markdown](https://acrafto.com/lt/uuid-generatorius/index.md))
- Svenska (sv): [UUID-generator](https://acrafto.com/sv/uuid-generator/) ([Markdown](https://acrafto.com/sv/uuid-generator/index.md))
- Dansk (da): [UUID generator](https://acrafto.com/da/uuid-generator/) ([Markdown](https://acrafto.com/da/uuid-generator/index.md))
- Suomi (fi): [UUID-generaattori](https://acrafto.com/fi/uuid-generaattori/) ([Markdown](https://acrafto.com/fi/uuid-generaattori/index.md))
- Norsk (no): [UUID-generator](https://acrafto.com/no/uuid-generator/) ([Markdown](https://acrafto.com/no/uuid-generator/index.md))
- Українська (uk): [Генератор UUID](https://acrafto.com/uk/henerator-uuid/) ([Markdown](https://acrafto.com/uk/henerator-uuid/index.md))
- Русский (ru): [Генератор UUID](https://acrafto.com/ru/generator-uuid/) ([Markdown](https://acrafto.com/ru/generator-uuid/index.md))
- Српски (sr): [UUID generator](https://acrafto.com/sr/uuid-generator/) ([Markdown](https://acrafto.com/sr/uuid-generator/index.md))
- Македонски (mk): [UUID генератор](https://acrafto.com/mk/uuid-generator/) ([Markdown](https://acrafto.com/mk/uuid-generator/index.md))
- Bosanski (bs): [Generator UUID-a](https://acrafto.com/bs/generator-uuid/) ([Markdown](https://acrafto.com/bs/generator-uuid/index.md))
- Shqip (sq): [Gjenerator UUID](https://acrafto.com/sq/gjenerator-uuid/) ([Markdown](https://acrafto.com/sq/gjenerator-uuid/index.md))
- 日本語 (ja): [UUID生成ツール](https://acrafto.com/ja/uuid-generator/) ([Markdown](https://acrafto.com/ja/uuid-generator/index.md))
- 한국어 (ko): [UUID 생성기](https://acrafto.com/ko/uuid-generator/) ([Markdown](https://acrafto.com/ko/uuid-generator/index.md))
- العربية (ar): [مولد UUID](https://acrafto.com/ar/uuid-generator/) ([Markdown](https://acrafto.com/ar/uuid-generator/index.md))
- हिन्दी (hi): [UUID जनरेटर](https://acrafto.com/hi/uuid-generator/) ([Markdown](https://acrafto.com/hi/uuid-generator/index.md))
- Bahasa Indonesia (id): [Generator UUID](https://acrafto.com/id/generator-uuid/) ([Markdown](https://acrafto.com/id/generator-uuid/index.md))
- Tiếng Việt (vi): [Trình tạo UUID](https://acrafto.com/vi/uuid-generator/) ([Markdown](https://acrafto.com/vi/uuid-generator/index.md))
- ไทย (th): [สร้าง UUID](https://acrafto.com/th/uuid-generator/) ([Markdown](https://acrafto.com/th/uuid-generator/index.md))
- עברית (he): [מחולל UUID](https://acrafto.com/he/uuid-generator/) ([Markdown](https://acrafto.com/he/uuid-generator/index.md))
