has_secure_password
utilise bcrypt-ruby. bcrypt-ruby
automatiquement gère le stockage et la génération de sels pour vous. Typique de hachage bcrypt-ruby
ressemble à ceci: $2a$10$4wXszTTd7ass8j5ZLpK/7.ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
. Ce hash est partagé en interne à l'aide de la fonction suivante:
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
Pour l'exemple de hachage de cette fonction, on obtient:
- version: 2a
- coût: 10
- sel: $2a$10$4wXszTTd7ass8j5ZLpK/7.
- hash: ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
L' ==
-la fonction de l' BCrypt::Password
extrait le sel et l'applique à la chaîne passée:
BCrypt::Password.create('bla') == 'bla' # => true