İçeriğe geç

bcrypt Hash Oluşturucu

Blowfish tabanlı uyarlanabilir tuzlu parola hash üretici ($2b$ standardı).

RFC 7693 / OpenBSD

Parametreler: bcrypt, maliyet 12 (2¹² tur), rastgele 16 bayt salt. Parola en fazla 72 UTF-8 bayt.

Her çalıştırmada yeni bir salt kullanılır; aynı parola farklı hash üretir. Doğrulama için çıktının tamamını saklayın.

Araç hakkında

Parolalar neden SHA-256 ile değil, yavaş bir fonksiyonla saklanır?

SHA-256 gibi genel hash fonksiyonları hızlı olacak şekilde tasarlanmıştır; tek bir ekran kartı saniyede milyarlarca SHA-256 hesaplayabilir. Veritabanı sızdığında saldırgan her aday parolayı bu hızla deneyebilir. Parola hashleme fonksiyonları ise ayarlanabilir bir maliyetle bilinçli olarak yavaştır ve her parolaya ayrı rastgele salt ekler; böylece aynı parolalar farklı hash üretir ve önceden hesaplanmış tablolar işe yaramaz.

bcrypt hash’inin yapısı

bcrypt, Blowfish şifresinin pahalı anahtar hazırlama adımını 2^maliyet kez tekrarlar. Araç maliyet 12 kullanır; maliyeti bir artırmak süreyi iki katına çıkarır. Çıktı 60 karakterlik tek bir dizedir:

$2b$12$ R9h/cIPz0gi.URNNX3kh2O PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW
 │   │   └ 22 karakter salt     └ 31 karakter hash
 │   └ maliyet (2¹² tur)
 └ sürüm
Boşluklar yalnız okunabilirlik için eklenmiştir; gerçek dizede yoktur.

Salt ve maliyet dizenin içinde olduğu için veritabanında ayrı sütun gerekmez; doğrulama için yalnız bu dizeyi saklamanız yeterlidir.

72 bayt sınırı

bcrypt girdinin yalnız ilk 72 baytını kullanır. Türkçe karakterler UTF-8’de 2 bayt, emojiler 4 bayt tuttuğundan 72 bayt 72 karakterden az olabilir. Araç sessizce kesmek yerine sınırı aşan girdide hata verir. Daha uzun parolaları desteklemesi gereken yeni sistemlerde Argon2id kullanın.

Sık sorulan sorular

Hangi maliyeti seçmeliyim?

OWASP en az 10 önerir. Sunucunuzda tek doğrulamanın 100–300 ms sürdüğü en yüksek değeri seçin ve donanım hızlandıkça artırın. Bu araç sabit olarak 12 kullanır.

$2a$, $2b$ ve $2y$ arasındaki fark nedir?

Bunlar farklı uygulamalardaki hata düzeltmelerini işaretleyen sürüm önekleridir. Güncel kütüphaneler $2b$ üretir; doğrulayıcı $2a$ ve $2b$ biçimlerini kabul eder.

Kaynaklar