質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1173閲覧

渡された文字列のハッシュ値を返すコードが理解出来ません

RThe

総合スコア25

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/07/25 09:14

現在ログイン機能の、Remember Me 機能を作っております。
railsチュートリアルを見ながら行っているのですが、下記のコードが何をしているのかが分からず、詰まっております。
調べたところ、「渡された文字列のハッシュ値を返す」とありました。
何故このようなコードになるのかが、分かりません。
大変お手数おかけしますが、行毎の意味を教えていただけると幸いです。

試みたこと→各単語を調べる。

・BCrypt→暗号化したパスワード
・Engine→特化したもの
・cost→?
・ActiveModel::SecurePassword→モデルで定義したhas_secure_password?

宜しくお願い申し上げます。

rb

1def User.digest(string) 2 cost = 3 if ActiveModel::SecurePassword.min_cost 4 BCrypt::Engine::MIN_COST 5 else 6 BCrypt::Engine.cost 7 end 8 BCrypt::Password.create(string, cost: cost) 9 end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

2種類の違ったものにハッシュという名前がつけられています。
語源は同じですが。

ひとつはrubyのclassの HashでRTheさんはこれをイメージしているかと思います。

ひとつはruby、railsの用語ではなく、セキュリティ関連で、情報を暗号化技術を使って「元情報復元、推定」ができない形の情報にしたものです。
ダイジェスト、とか フィンガープリントとか言う場合もあります。
BCryptが扱うのはこちらのハッシュです。

語源は両方共ハッシュドビーフのハッシュ、細切れにしてしまうことです。

投稿2020/07/25 11:39

winterboum

総合スコア23347

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

RThe

2020/07/25 14:49

いつもお答え頂き、ありがとうございます。 んるほどです。ハッシュは2種類の内容が使われているのですね!
winterboum

2020/07/25 23:48

ちょっと訂正「暗号化技術を使っていない」ハッシュもあると思う。 rubyのHashのkeyは ハッシュしてつくった数値をindexにしているとおもってるのですが(code読んでいないので、class名やCでの歴史からの推定)これは暗号化技術は使う必要ないので使っていないかも。
RThe

2020/07/27 13:50

なるほどです!必ずしも暗号化するわけではないのですね。 ご丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問