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

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

ただいまの
回答率

89.10%

ハッシュ化されたパスワードを戻したい

解決済

回答 3

投稿

  • 評価
  • クリップ 1
  • VIEW 47K+

earnest_gay

score 403

DBへパスワードを登録するときに
password_hash($_SESSION['join1']['pw'],PASSWORD_DEFAULT)
でパスワードをハッシュ化して登録したのですが、

プロフィール更新ページを作っていて
パスワードを取得して表示させたのですが
ハッシュ化されて表示されてしまっているので
このハッシュ化されたパスワードを解除(生パスワードに戻したい)する方法が知りたいです。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+7

ハッシュは非可逆です。元に戻すことは出来ません。

もし仮に戻せたとしたら、じゃあ何のためにハッシュ化したのか?ということになってしまいます。

ものすごく大雑把にハッシュというものを説明すると、ハッシュとは、「入力された文字列を1個おきに抜かした文字列を生成しよう」などというもの(とそれによって生成されたもの)なのです。
つまり、「あいうえお」が入力されたら「あうお」が出力され、「かきくけこ」だったら「かくこ」です。
ですから、「あうお」というハッシュから元の文字列を復元することは出来ないのです。入力が「あいうえお」でも「あきうけお」でも「あしうせお」でも全て「あうお」になるからです。よって「あうお」という文字列を見て元の文字列が何だったかなんて分からないのです。

実際のハッシュはもっと複雑なルールによって計算されていますが、とにかく元の文字列の情報は失われています。

しかし、同じ入力に対しては常に同じ出力なので、それを利用してパスワードなどの認証が実現されています。
ハッシュ化しておけば、パスワードが一致しているか確認できつつ、パスワードが何かは本人以外分からない、ということが実現できます。たとえばデータベースがクラックされてパスワードが流出したとしても、ハッシュ化されていれば、クラッカーもそれから元のパスワードが何だったかを知ることは出来ません。
もちろん、そのハッシュ化されているパスワードを、例えばログインページのパスワード欄に入力しても、それがさらにハッシュ化されるだけですので、やはりログインは成功しません。

…というセキュリティの余談でした。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 03:48

    追記ありがとうございます。

    ログインする際の話では、確か
    hash_なんちゃら(入力したパスワード,DBへ登録されているハッシュ化されたパスワード)

    で照合できるので、ハッシュ化されたパスワードを元に戻せると思っていました。

    キャンセル

  • 2016/06/29 03:53

    それは単に、入力したパスワードをハッシュ化して、(すでにハッシュ化されている)DBに登録されているパスワードと一致するか見ているのです。

    キャンセル

  • 2016/06/29 03:57

    なるほど!
    ハッシュ化されたパスを戻して一致するか見てるのだと、逆に思ってました!


    ありがとうございます!

    キャンセル

+1

ハッシュ化したものは元に戻せません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 03:34

    わかりました...
    回答ありがとうございます。

    キャンセル

+1

パスワードの管理法についての参考情報を示しておきます。
最近では同じパスワードでも毎回異なるハッシュ値になるようになっており、
ハッシュ結果を単純に比較しただけではパスワード一致したかは判定できないyいうになっています。

...
同じ値をハッシュ化しても、出力されるハッシュ値(ソルト)が違うので、単純に文字列比較しても一致しない!!
...
じゃあ、どうするかというと専用の関数を使う。
Hash::check(‘平文’, bcrypt(‘平文’))で、自動生成されたソルトとコストでハッシュ化した後に比較してくれるので無問題!
...

...
大昔編その2 - 単純なHash化
現代編 その1 - saltの導入とmd5 から sha2 へ
現代編 その2 - ストレッチングの導入
現代編 その3 - bcrypt の登場
現代編 - 課題
未来編

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/06/29 13:33

    詳しくありがとうございます!
    リンク先拝見させてもらいますね。

    キャンセル

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

  • ただいまの回答率 89.10%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る