70 votes

Has_secure_password utilise-t-il une forme quelconque de salage?

Je souhaite utiliser has_secure_password pour stocker des mots de passe chiffrés dans la base de données. Je ne trouve pas sur Internet si has_secure_password utilise une forme quelconque de salage. Si cela utilise le salage, comment ça marche? Quelqu'un peut-il clarifier cela pour moi?

Thijs

93voto

fabi Points 1079

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X