has_secure_password
を使用して、暗号化されたパスワードをデータベースに保存したい。 has_secure_password
でソルトを使用していると、インターネット上で見つけることができません。塩漬けを使用する場合、どのように機能しますか?誰かがこれを私のために明確にできますか?
Thijs
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
ハッシュの例では、この関数は次のようになります。
==
のBCrypt::Password
関数はソルトを抽出し、渡された文字列に適用します。
BCrypt::Password.create('bla') == 'bla' # => true