Password Generator
Kriptografik olarak güvenli, ayarlanabilir uzunluk ve karakter sınıflarıyla şifre üretici. Tarayıcıda çalışır.
Bu araç tarayıcınızda çalışır. Veriler dışarı çıkmaz.
Nasıl Ç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 — bu, işletim sisteminin entropi havuzunu
(Linux’ta /dev/urandom, macOS’ta Security.framework, Windows’ta CNG) kullanır.
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 (tüm yazdırılabilir ASCII) | ~105 bit — çok güçlü |
| 20 | 94 | ~131 bit |
Pratik eşikler:
- < 40 bit: zayıf — modern GPU’larla saatler içinde brute force.
- 60–80 bit: güçlü — özel donanım ve yıllar gerektirir.
- > 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 karakter küçük harf (~94 bit), 8 karakter sembolden (~52 bit) çok daha güçlü.
Tek bir karakter eklemek alfabe sayısı kadar olasılığı çarpan; bir sembol sınıfı eklemek sadece sabit bir çarpan ekler.
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 karakter %1.6 daha sık seçilir.
Bu araç rejection sampling kullanır: maxValid = 256 - (256 % setSize)’dan büyük byte’lar
atılır. Sonuç: tam düzgün (uniform) dağılım, herkes eşit olasılıkla seçilir.
”Karışan karakterleri hariç tut”
Şifre kâğıda yazılacak veya yüksek sesle okunacaksa 0/O, 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 — sonraki escape ihtiyacını ortadan kaldırır.
Bu araç ne için değildir
- Production secret yönetimi. Üretilen şifreyi sırayla 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, key exchange protokolleri (HKDF, Diffie-Hellman) daha uygun.
Gizlilik
Bu araç tamamen tarayıcıda çalışır. Üretilen şifreler sunucuya gönderilmez. Yine de:
- Üretilen şifreyi clipboard’a kopyalarsanız, 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, kayıt edilebilir.
Hassas hesaplar için: üret, kopyala, password manager’a yapıştır, clipboard’u temizle.