以前、PHPでのパスワードの暗号化を質問しましたが、復号させるにはどうすればいいでしょうか?


管理画面などでパスワードを表示させる必要があるため。。。
※復号以外の方法があれば、それでもかまいません。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/07/07 05:16:12
  • 終了:2007/07/14 05:20:04

回答(5件)

id:F-15X No.1

F-15X回答回数111ベストアンサー獲得回数132007/07/07 07:52:48

ポイント20pt

もしかしてMD5を使いましたか?

MD5は暗号化ではありません。ハッシュ値を生成します。

(基本的に戻せません)

http://d.hatena.ne.jp/keyword/MD5


MySQLでカラムの暗号化/復元

http://www.ironhearts.com/diary/archives/001255.html

AES_ENCRYPT関数(暗号化)

AES_DECRYPT関数(戻す)

id:makocan

ありがとうございます。

ただ、復号を使おうとしている時点でなんですが、セキュリティ的にはどうなのでしょうか??

2007/07/07 15:45:26
id:Mook No.2

Mook回答回数1312ベストアンサー獲得回数3912007/07/07 09:25:27

ポイント20pt

どのような理由があれ、パスワードを表示するというのはシステム運用上好ましくありません。


認証に関してはやり方はご理解いただけていると思いますが、パスワードがわからなくなった場合は、管理者が新たな暫定パスワードを付与し、ユーザが次回ログオン時に変更するというのが妥当な運用だと思います。


ちなみに、MD5などの暗号化(ハッシュ関数)は一方向関数なので、複合はできません。

MD5

id:ofk No.3

ofk回答回数12ベストアンサー獲得回数32007/07/07 14:40:23

ポイント20pt

パスワードを表示させる必要がある場面というのは「パスワードを忘れてしまったので秘密の質問等で利用者のみにパスワードを知らせる」ぐらいしか無いと思われます。(もし、他の使い道があるなら、書いて頂けると具体的に答えれるかもしれません)

で、忘れてしまった場合は、今までのパスワードを破棄して、システムがランダムな文字列をパスワードに設定してしまい、メールやその画面(お勧めはしないが)で利用者に通知し、ログイン後パスワードの再設定を求めることが良いように思われます。

http://example.com

id:makocan

Mook様と合わせて、お答えさせていただきます

。パスワードを表示させる理由としましては、

複数の会社のログインパスワードを管理する管理者がおりまして、その方が全員のパスワードを表示させる様なものを作成したいと言っているためです。

2007/07/07 15:44:47
id:Mook No.4

Mook回答回数1312ベストアンサー獲得回数3912007/07/07 21:12:39

ポイント20pt

コメントが無効になっているため、再度の回答で失礼します。

こちらはポイント不要です。


「その方」が昨今のセキュリティ事情に詳しい方であることを期待しますが・・・。

まず、「全員のパスワードを表示させるようなもの」を作る必要があるのか、また作った場合、それが悪用される危険性は十分検討しておくべきかと思います。

(その管理者が会社を辞めて、あるいは役職が変わって、悪意を持って他の社員の情報を盗用しようとしたりしたときに、それが出来てしまったりしたら問題です。)


管理者というのは、使用者がシステムを安全に運用するよう管理する人であって、すべての情報を知りうるべき人ではありません。


技術的には、MD5は複合できないものですので、すでにこれで実装されている場合、もし複合可能な暗号に置き換えるにはすべてのパスワードを再設定する必要があります。


セキュリティの基本(10)セキュリティ対策運用のポイント

id:makocan

恐らくは、総合で管理かしているマスターな管理者自体も管理している会社さんの管理している各会社の管理画面にログインしたいのだと思います。

セキュリティ的には良くないですが、何とか少しでも向上できませんでしょうか?

また、運用はしていないため、MD5からシフトすることは可能です。

2007/07/08 16:16:48
id:Yota No.5

Yota回答回数453ベストアンサー獲得回数282007/07/09 08:42:45

ポイント20pt

暗号化復号化の関数はPHPでもいろいろ用意されています。

例えば、下のようなもの。

http://www.php.net/manual/ja/function.mcrypt-encrypt.php

http://www.php.net/manual/ja/function.mcrypt-decrypt.php

ただし、上の議論と同じようのことになりますが、パスワードの管理は以下のような方法が安全だと思います。

1.管理者が初回パスワードを発行する。

2.ユーザは初回ログインのときにパスワードを変更する。(管理者はそのパスワードが何か知らない)

3.パスワードには期限があって、定期的に変更しなければいけない。

ユーザがパスワードを忘れた場合は、そのパスワードを削除して最初からやり直す。

管理者(スーパーユーザ)のパスワードは一般ユーザとは別の方法で管理する。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません