bcrypt Hash Oluşturucu

Hash oluştur

Daha yüksek = daha yavaş ve daha güvenli. 12 iyi bir varsayılandır.

Bazen eski bir yedekten gelen bcrypt hash’iniz ve düz metin bir parolanız olur; eşleşip eşleşmediklerini bilmeniz gerekir. Ya da elinizde bir parola vardır ve belirli bir cost faktörünün üreteceği hash’i istersiniz. Bu araç ikisini de yapar: bir parola yazınca taze hash üretir, hash ve aday parola yapıştırınca doğrulamanın başarılı olup olmadığını söyler — üretim ortamındaki giriş kontrolüyle aynı constant-time karşılaştırmayı kullanarak.

bcrypt üretme veya doğrulama

  1. 1

    Bir mod seçin

    Paroladan yeni hash üretin veya parolayı mevcut `$2a$` / `$2b$` / `$2y$` hash'ine karşı doğrulayın.

  2. 2

    Üretme için: düz metin ve cost girin

    Cost 4-14; 10-12 normaldir. Her hash için 16-byte rastgele salt oluşturulur.

  3. 3

    Doğrulama için: hash ve düz metni yapıştırın

    Araç salt ve cost değerini hash'ten çıkarır ve düz metni aynı parametrelerle yeniden hash'ler.

  4. 4

    Sonucu okuyun

    Üretme modu 60 karakterlik hash'i kopyalar; doğrulama modu yeşil eşleşme veya kırmızı uyuşmazlık döndürür.

Doğrulama modunun iç işleyişi

Şöyle saklanmış bir hash verildiğinde:

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6

Doğrulayıcı:

  1. Sürümü (2b), cost’u (12), salt’ı (cost’tan sonraki ilk 22 karakter) ve digest’i (son 31 karakter) parse eder.
  2. Aday düz metin üzerinde çıkarılan salt ve cost ile bcrypt’i yeniden çalıştırır.
  3. Ortaya çıkan digest’i constant-time karşılaştırma kullanarak orijinaliyle karşılaştırır.

Başarılı karşılaştırma true; herhangi bir fark false üretir.

Constant-time karşılaştırma

İki stringi saf == ile karşılaştırmak, bir byte farklı olduğu anda döner — yeterince örnekle hash’i basamak basamak sızdırabilen bir timing side channel. Üretim parolası kontrolleri (ve bu araç), her zaman her byte’ı inceleyen constant-time karşılaştırma kullanır; bu yüzden karar süresi kaç baştaki byte’ın eşleştiğine bağlı değildir.

Yaygın tanı durumları

Belirti Olası neden
Doğrulama başarısız, paroladan eminsiniz Girdide sondaki boşluk veya BOM. İkisini de temizleyin.
Doğrulama başarısız, sürüm 2y Bazı kütüphaneler 2y sevmez; geçerli ve uyumludur. İleriye dönük 2b ile yeniden hash’leyin.
Hash çok kısa / bozuk bcrypt hash’i değil. MD5 32 hex karakterdir, SHA-1 40, bcrypt ise $ ayraçlarıyla 60 karakterdir.
Cost uyuşmazlığı uyarısı Saklanan cost, politika minimumunuzun altında. Bir sonraki başarılı girişte yeniden hash’leyin.

Girişte yeniden hash’leme

En iyi uygulama: kullanıcı başarılı giriş yaptığında, saklanan hash’in cost değerinin güncel politikanızdan düşük olup olmadığını kontrol edin. Düşükse parolayı yeni cost ile yeniden hash’leyip veritabanını güncelleyin. Birkaç ay içinde kullanıcı tabanının tamamını kimseden parola değiştirmesini istemeden yükseltirsiniz.

Bu araç ne yapmaz?

  • Toplu doğrulama — Her seferinde tek hash için tasarlanmıştır.
  • Kırma veya brute force — Sözlük ya da rainbow-table saldırıları bilerek kapsam dışıdır.
  • Düz metni geri alma — bcrypt tek yönlüdür; parolayı unuttuysanız tek yol sıfırlamaktır.

Sık Sorulan Sorular

Hayır. Hash’leme ve doğrulama tarayıcınızda gerçekleşir. Ne düz metin ne de hash sayfadan ayrılır.

Salt her hash için rastgele oluşturulur. Zaten bütün amaç budur — aynı parolaya sahip iki kullanıcı farklı hash alır ve rainbow table’lar boşa çıkar.

Evet, doğrulama modu tam olarak bunu yapar: elinizdeki hash’i yapıştırın, aday parolayı yapıştırın; araç eşleşmeyi onaylar veya reddeder.

Evet. Tüm modern varyantlar birlikte çalışır — digest sürümler arasında uyumludur; yalnızca etiket farklıdır. 2000 dönemi sistemlerinden gelen bazı eski $2$ hash’leri açık legacy desteği olan bir kütüphane gerektirebilir.

İlgili Araçlar