Использует ли has_secure_password какую-либо форму посола?
Я хочу использовать has_secure_password
хранить зашифрованные пароли в базе данных. Я не могу найти в интернете, если has_secure_password
использует любую форму посола. Если это использует соление, как это работает? Кто-нибудь может уточнить это для меня?
Тайс
1 ответ
Решение
has_secure_password
использует bcrypt-ruby. bcrypt-ruby
автоматически обрабатывает хранение и генерацию солей для вас. Типичный хэш из bcrypt-ruby
выглядит так: $2a$10$4wXszTTd7ass8j5ZLpK/7.ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
, Этот хэш разделен внутри, используя следующую функцию:
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
Для примера хеш-функции эта функция дает:
- версия: 2а
- стоимость: 10
- соль: $ 2a $ 10 $ 4wXszTTd7ass8j5ZLpK / 7.
- hash: ywXXgDh7XPNmzfIWeZC1dMGpFghd92e
==
-функция BCrypt::Password
извлекает соль и применяет ее к переданной строке:
BCrypt::Password.create('bla') == 'bla' # => true