secure salted rails password online hashed has encrypt and ruby-on-rails encryption passwords salt

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