2012-04-13 29 views

cevap

79

has_secure_passwordbcrypt-ruby kullanır. bcrypt-ruby, sizin için otomatik olarak depolama ve tuz oluşumunu ele alır. bcrypt-ruby'dan gelen tipik bir karma şunun gibi görünür: $2a$10$4wXszTTd7ass8j5ZLpK/7.ywXXgDh7XPNmzfIWeZC1dMGpFghd92e.

  • versiyonu: 2a:
  • maliyeti: 10
  • tuzu: $ 2a $ 10 $ 4wXszTTd7ass8j5ZLpK bu fonksiyon verimleri, örneğin karma için

    def split_hash(h) 
        _, v, c, mash = h.split('$') 
        return v, c.to_i, h[0, 29].to_str, mash[-31, 31].to_str 
    end 
    

    : Bu karma Aşağıdaki fonksiyon kullanarak içten ayrılmıştır/7.

  • karma: ywXXgDh7XPNmzfIWeZC1dMGpFghd92e

==BCrypt::Password ait taşımasının avantajlı tuz ayıklar ve geçirilen dizeye geçerlidir:

BCrypt::Password.create('bla') == 'bla' # => true 
+1

O yazar tuz için ayrı bir sütun soruyordum inanıyordu. Bu tuzu kontrol etmemizin bir yolu yoktur, bu yüzden kullanıcı için bir karma genişletici gibi davranır - sadece 1 sütundan ödün vermek pahasına bir süre meselesini kırmaz. – jdoe

+11

Soru, 'has_secure_password herhangi bir tuzlama şekli kullanıyor mu?' Sorusu vardı. Sanırım çoğu zaman bir veritabanının güvenliği tehlikededir, bu yüzden eğer tuz fazladan bir sütun içine kaydedilirse bir fark yaratmaz. Bununla birlikte, veritabanının yalnızca tek bir sütununun ele geçirilmesi durumunda daha güvenli olduğunun doğru. – fabi

+0

Merhaba Fabi, cevabınız için teşekkürler, daha büyük bir kitle için ilginç/uygulanabilir olduğunu düşünüyorsanız lütfen soruyu da not alın. –

İlgili konular