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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

Q&A

解決済

2回答

3319閲覧

ハッシュ化されたパスワードと入力されたパスワードの照合をする仕組みについて

achikisan1238

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

ハッシュ

ハッシュは、高速にデータ検索を行うアルゴリズムのことです。

0グッド

2クリップ

投稿2017/08/30 02:52

ハッシュ化されたパスワードと入力されたパスワードの照合をする仕組みについて質問です!

ハッシュ化されたパスワードをDBから取り出し、
ログイン画面で入力した生のパスワードと照合するプログラムを組んでいます。

しかし、この仕組みがよくわかっていません。

ハッシュ化とは不可逆なものであり、
入力された生パスワードを再度はハッシュ化して照合しているらしいのですが、
そのハッシュ化の法則にはソルトを乱数で組み込むようになっているらしく
同じ文字列をハッシュ化しても同じ結果にならないはずなので、
どうやって照合しているのか気になっています!

ハッシュ化されたパスワードを照合する仕組みがわかる方、是非教え頂けると嬉しいです!

使用ツール
Spring Boot
Java
使用メソッド
PasswordEncoder.encode()
PasswordEncoder.matches()

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

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

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

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

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

m.ts10806

2017/08/30 02:59

「同じ文字列をハッシュ化しても同じ結果にならない」とのことですが実際に試してみましたか?私の方では同じ文字列で同じ方式でハッシュ化した場合は同じ結果になると記憶してますが・・
achikisan1238

2017/08/30 03:07

ご回答ありがとうございます!文字列「password」を何度かこのメソッドにかませたところ、DBに登録されるのはどれも異なるはハッシュ化された文字列でした。またSpringSecurityの公式サイトにもランダムにソルトが付与されると書いてあるので、違うと認識していましたが、これでは間違いでしょうか?
SVC34

2017/08/30 03:26 編集

使用されているクラスはソルトを指定できないため、mattnさん回答のコメントにある記事のように別のクラスを使用する必要があります。
guest

回答2

0

ベストアンサー

ハッシュ化とは、元となるソースから生成したハッシュ値は必ず同じになるというルールです。ですので
画面から入力したパスワードをハッシュ化した値と、DB に格納した値とを比較します。

その際、ソルトという乱数に揺らぎを持たせる為のタネを与える事があるのですが、これはDBに格納した際のハッシュ化の時点のソルトとパスワードをハッシュ化する際のソルトを合わせないといけません。文字列とソルトが同じ場合である時のみ結果が同じになります。

投稿2017/08/30 03:08

mattn

総合スコア5030

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

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

guest

0

ソルトは秘密情報じゃないので、DBに記録しておきます。

ソルトとは、「Abc-001 というパスワードをxxxという方式でハッシュ化するとどのシステムでも同じ文字列になる」というのを回避するための物です。

投稿2017/08/30 03:21

otn

総合スコア84423

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問