DBへパスワードを登録するときに
password_hash($_SESSION['join1']['pw'],PASSWORD_DEFAULT)
でパスワードをハッシュ化して登録したのですが、
プロフィール更新ページを作っていて
パスワードを取得して表示させたのですが
ハッシュ化されて表示されてしまっているので
このハッシュ化されたパスワードを解除(生パスワードに戻したい)する方法が知りたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
ハッシュは非可逆です。元に戻すことは出来ません。
もし仮に戻せたとしたら、じゃあ何のためにハッシュ化したのか?ということになってしまいます。
ものすごく大雑把にハッシュというものを説明すると、ハッシュとは、「入力された文字列を1個おきに抜かした文字列を生成しよう」などというもの(とそれによって生成されたもの)なのです。
つまり、「あいうえお」が入力されたら「あうお」が出力され、「かきくけこ」だったら「かくこ」です。
ですから、「あうお」というハッシュから元の文字列を復元することは出来ないのです。入力が「あいうえお」でも「あきうけお」でも「あしうせお」でも全て「あうお」になるからです。よって「あうお」という文字列を見て元の文字列が何だったかなんて分からないのです。
実際のハッシュはもっと複雑なルールによって計算されていますが、とにかく元の文字列の情報は失われています。
しかし、同じ入力に対しては常に同じ出力なので、それを利用してパスワードなどの認証が実現されています。
ハッシュ化しておけば、パスワードが一致しているか確認できつつ、パスワードが何かは本人以外分からない、ということが実現できます。たとえばデータベースがクラックされてパスワードが流出したとしても、ハッシュ化されていれば、クラッカーもそれから元のパスワードが何だったかを知ることは出来ません。
もちろん、そのハッシュ化されているパスワードを、例えばログインページのパスワード欄に入力しても、それがさらにハッシュ化されるだけですので、やはりログインは成功しません。
…というセキュリティの余談でした。
投稿2016/06/28 18:23
編集2016/06/28 18:38総合スコア393
0
パスワードの管理法についての参考情報を示しておきます。
最近では同じパスワードでも毎回異なるハッシュ値になるようになっており、
ハッシュ結果を単純に比較しただけではパスワード一致したかは判定できないyいうになっています。
-
ハッシュ化と暗号化は違う。ハッシュ化(SHA1,MD5)すると、元には戻らない http://blog.goo.ne.jp/xmldtp/e/b6a697735a597e8e41af460ae2f2875a
-
SHA1でハッシュ化したパスワードは危険になった http://blog.ohgaki.net/password-hashed-only-by-sha1-is-not-safe
-
laravel5.1のパスワード・ハッシュ化にbcryptを使ってみたら、同じパスワードでもハッシュ値が毎回変わる http://www.messiahworks.com/archives/10584
...
同じ値をハッシュ化しても、出力されるハッシュ値(ソルト)が違うので、単純に文字列比較しても一致しない!!
...
じゃあ、どうするかというと専用の関数を使う。
Hash::check(‘平文’, bcrypt(‘平文’))で、自動生成されたソルトとコストでハッシュ化した後に比較してくれるので無問題!
...
- パスワード保存方法の過去と現在そして未来 http://kengos.jp/2015/09/13/password.html
...
大昔編その2 - 単純なHash化
現代編 その1 - saltの導入とmd5 から sha2 へ
現代編 その2 - ストレッチングの導入
現代編 その3 - bcrypt の登場
現代編 - 課題
未来編
投稿2016/06/28 21:37
総合スコア22328
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
ハッシュ化したものは元に戻せません。
投稿2016/06/28 18:26
総合スコア52
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/28 18:33
2016/06/28 18:38
2016/06/28 18:48
2016/06/28 18:53
2016/06/28 18:57