ruby-on-rails - salted - salt password generator
¿Has_secure_password usa alguna forma de salazón? (1)
Quiero usar has_secure_password
para almacenar contraseñas encriptadas en la base de datos. No puedo encontrar en Internet si has_secure_password
utiliza alguna forma de salazón. Si usa salazón, ¿cómo funciona? ¿Alguien puede aclarar esto por mí?
Thijs
has_secure_password
usa bcrypt-ruby . bcrypt-ruby
maneja automáticamente el almacenamiento y la generación de sales para usted. Un hash típico de bcrypt-ruby
ve así: $2a$10$4wXszTTd7ass8j5ZLpK/7.ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
. Este hash se divide internamente usando la siguiente función:
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
Para el hash de ejemplo, esta función produce:
- versión: 2a
- costo: 10
- sal: $ 2a $ 10 $ 4wXszTTd7ass8j5ZLpK / 7.
- hash: ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
La función ==
de BCrypt::Password
extrae la sal y la aplica a la cadena pasada:
BCrypt::Password.create(''bla'') == ''bla'' # => true