Tool

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.

Karakter sınıfları

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 — 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:

UzunlukAlfabeEntropi
826 (sadece küçük harf)~38 bit — zayıf
1262 (a-z A-Z 0-9)~71 bit — güçlü
1694 (boşluk hariç yazdırılabilir ASCII)~105 bit — çok güçlü
2094~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.

Ara

Yazmaya başlayın. Notlar, sistem yazıları, günlük, araçlar ve sayfalar.

gezesckapat