---
title: "Parola Üretici"
description: "Kriptografik olarak güvenli, ayarlanabilir uzunluk ve karakter sınıflarıyla şifre üretici. Tarayıcıda çalışır."
url: https://sade.dev/tr/tools/password-generator/
lang: tr
author: "Muhammet Şafak"
published: 2026-05-19
updated: 2026-09-06
section: Tool
tags: ["password","security","crypto"]
---

# Parola Üretici

> Kriptografik olarak güvenli, ayarlanabilir uzunluk ve karakter sınıflarıyla şifre üretici. Tarayıcıda çalışır.

`crypto.getRandomValues` ile üretilen, **kriptografik olarak güvenli** rastgele şifreler. Uzunluk,
karakter sınıfları ve filtreler ayarlanabilir. Hiçbir şey sunucuya gönderilmez.

## Math.random() neden yeterli değil?

JavaScript'in `Math.random()` fonksiyonu **kriptografik olarak güvenli değildir**. V8 ve diğer
motorlar genellikle `xorshift128+` gibi hızlı ama tahmin edilebilir bir algoritma kullanır. Yeterli
çıktıyı gözlemleyen biri, sonraki "rastgele" değerleri öngörebilir.

Şifre üretiminde `crypto.getRandomValues` zorunludur — değerler tarayıcının kendi CSPRNG'sinden
gelir, o da işletim sisteminin entropi kaynağıyla tohumlanır (Linux'ta `/dev/urandom`, macOS'ta
Chromium için `getentropy()` ve WebKit için CommonCrypto'daki `CCRandomGenerateBytes`, Windows'ta
`CNG`).

## Entropi neden önemli?

Şifre gücünün ölçüsü **entropi** (bit cinsinden):

```
entropi = uzunluk × log₂(alfabe_boyutu)
```

Örnekler:

| Uzunluk | Alfabe | Entropi |
|---|---|---|
| 8 | 26 (sadece küçük harf) | ~38 bit — **zayıf** |
| 12 | 62 (a-z A-Z 0-9) | ~71 bit — güçlü |
| 16 | 94 (boşluk hariç yazdırılabilir ASCII) | ~105 bit — çok güçlü |
| 20 | 94 | ~131 bit |

Son iki satır genel bir ASCII referansıdır: bu aracın ulaşabileceği en geniş alfabe 88 karakterdir
(26 + 26 + 10 + 26 sembol), yani o satırları üretemez — burada 20 karakter en fazla ~129 bit eder.

Pratik eşikler:

- **< 40 bit:** zayıf — modern GPU'larla saatler içinde brute force.
- **40–60 bit:** orta — aracın kendisinin "Orta" olarak etiketlediği bant; hızlı bir hash'e karşı
  tek bir GPU alt ucu saatler, üst ucu haftalar içinde tarar.
- **60–80 bit:** güçlü — bcrypt veya Argon2 gibi yavaş bir hash'e karşı erişilmez; MD5 gibi hızlı
  bir hash'e karşı ise alt ucunu tek bir GPU haftalar içinde tüketir, yani "özel donanım ve yıllar"
  yalnızca üst uç için geçerlidir.
- **> 80 bit:** çok güçlü — gelecek 10 yılın brute-force kapasitesi karşısında bile dayanıklı.

## Uzunluk vs karmaşıklık

Bir şifrenin gücünü artırmanın en verimli yolu **karakter çeşitliliğini değil, uzunluğu artırmaktır**.
20 karakterlik küçük harf şifresi (~94 bit), sembol içeren 8 karakterlik şifreden (~52 bit) çok
daha güçlü.

> Tek bir karakter eklemek olasılık uzayını alfabe boyutu kadar çarpar; alfabeyi genişletmek ise
> `(b₂/b)^uzunluk` kadar — yani kazanç `uzunluk × log₂(b₂/b)` bit, sabit bir çarpan değil,
> uzunlukla orantılı. Aracın varsayılan 20 karakterinde sembol sınıfı eklemek (62 → 88) ×1101 eder,
> tek karakter eklemenin ×62'sinden fazla.

Uzunluk-önce tavsiyesi yine de geçerli — fazladan sınıfların kazancı küçük olduğu için değil,
zorunlu karakter sınıfları insanları öngörülebilir kalıplara ittiği için; NIST de composition
rule'ları bu yüzden kaldırdı.

## Modulo bias

Bir saf "rastgele 8-bit sayı → karakter" eşlemesi `byte % charset.length` ile yapılırsa, bazı
karakterler diğerlerinden **daha sık** gelir. Örnek: `charset.length = 62` ise, 0-255 arası 256
sayı 62'ye tam bölünmez (256 % 62 = 8). İlk 8 karakterin her birine 5 byte değeri düşerken kalan
54 karaktere 4'er tane düşer, yani bu 8 karakter %25 daha sık seçilir.

Bu araç **rejection sampling** kullanır: `maxValid = 256 - (256 % setSize)` ve üzerindeki byte'lar
atılır. Sonuç: tam düzgün (uniform) dağılım, her karakter eşit olasılıkla seçilir.

## "Karışan karakterleri hariç tut"

Şifre kâğıda yazılacak veya yüksek sesle okunacaksa `0/O` ve `1/l/I/|` ayrımı zor. Bu seçenek
o karakterleri çıkarır. **Entropi düşer** — pratiklik için bilinçli ödün.

## "Shell-safe"

Üretilen şifre `bash`, SQL connection string, URL veya `.env` dosyasına yazılacaksa,
escape gereken karakterler (`$`, `` ` ``, `"`, `'`, `\`, `;`, `|`, `&`, `<`, `>`, `(`, `)`)
sorun çıkarır. Bu filtre onları çıkarır — kabukta escape'ten kurtulmaya yeter, URL'de yetmez:
RFC 3986'nın rezerve saydığı karakterler (`!`, `@`, `#`, `*`, `+`, `=`, `[`, `]`, `:`, `,`, `?`,
`/`) ve yüzde kodlamasının kendi karakteri `%` filtreden geçer, hâlâ percent-encoding ister.

## Bu araç ne için *değildir*

- **Production secret yönetimi.** Üretilen şifreyi hemen bir password manager'a (1Password,
  Bitwarden, KeePassXC) veya secret store'a (Vault, AWS Secrets Manager) kaydet — burada bırakma.
- **Master password seçimi.** Master password için **diceware-style passphrase** daha iyi:
  hatırlanabilir + yüksek entropi. (Bu araç V1.2 yol haritasında.)
- **Paylaşılan secret üretimi.** İki tarafın aynı şifreyi bilmesi gereken senaryolarda, bir key
  exchange protokolü (Diffie-Hellman) — çıktısının üzerine HKDF (RFC 5869) gibi bir anahtar türetme
  fonksiyonu ile — daha uygun.

## Gizlilik

Bu araç **tamamen tarayıcıda** çalışır. Üretilen şifreler sunucuya gönderilmez. Yine de:

- Üretilen şifreyi clipboard'a kopyalarsanız, şifre diğer uygulamaların erişimine açık olur.
- Tarayıcı eklentilerinden bazıları DOM içeriğini okuyabilir.
- Ekran paylaşımı sırasında şifre görünürse, kaydedilebilir.

Hassas hesaplar için: üret, kopyala, password manager'a yapıştır, **clipboard'u temizle**.
