ユーザーがサインアップすると、.salt を使用してソルトが生成されるパスワード システムを使用していますBCrypt::Password.create("Use #{username} with #{Time.now} and #{rand(100)} to make salt", cost: 13)
。
次に、入力したパスワードを暗号化し、BCrypt::Password.create("Put #{salt} on the #{password}")
両方をデータベースに保存します。
彼らがログインするとき、それはこれを使用します:
check_password = BCrypt::Password.new(hashed_password)
check_password == "Put #{salt} on the #{password}"
問題は、ソルトが BCrypt で暗号化された文字列である限り、パスワード チェックで常に true が返されることです。
私はBCryptにかなり慣れていないので、これを完全に間違っている可能性があります。それは私の技術ですか、それともより深い問題ですか?