2010-12-15 3 views
0

暗号化されたパスワードを後で復号化できるデータベース(MySQL)に挿入する方法を探しています。私は研究を行ってきましたが、bcryptはパスワードを保存するより安全な方法になると結論づけましたが、私はそれらを取り戻すことができません。また、ログインする必要がある場合にパスワードを知っておくことが重要です彼らのシステム(私はIP認証に依存したくない)。ネイティブPHPとPERL内での暗号化

http://php.net/manual/es/function.mcrypt-cbc.phpには、PHPとPERLの両方で暗号化のライブラリを使用した例がありますが、PERLには追加のライブラリが必要です。PHPは特定のバージョンである必要があります。

PERLとPHPでネイティブに(追加のライブラリなし)、少なくとも1年前のバージョンで実行できるソリューションを探しています。 PHP 5.3の関数などはありません。

システムには100人程度のユーザーしかいないため、誰かがデータベースにアクセスするリスクはありませんが、何らかの保護が必要な場合は入力してください。必要であれば、PERLにライブラリを追加しなくても問題ありませんが、PHPライブラリを使用したり、PHPのバージョンが5.0より高いことを嫌うことはできません。

+0

はそれだけで、パスワードのハッシュを作成するオプションはありませんか? –

+0

私が知っている唯一の本当のハッシュは、私が知っているMD5はやや安全ではありません。私は5分以内に割れないようにすることができるものを持っていたいと思っています – ParoX

答えて

1

標準的なハッシュ関数shaバージョン)は、パスワードを取得できないことを意味しますが、ではないため、システムにログインできません。

データベースのパスワードハッシュを既知のもの(たとえばupdate user set password = sha1('password')など)で更新してログインし、パスワードを古いハッシュに戻してください。あなたは入っていて、パスワードは元の状態に戻ります。

暗号化と復号化を行う場合、鍵はサーバー上に存在する必要があります。あなたが侵害された場合、攻撃者は鍵にもアクセスできるため、ハッシュしない場合はパスワードを暗号化しないでおくこともできます。

0

SHA256またはSHA512を使用してパスワードをハッシュするだけです。それで十分でしょう。さて、あなたはあなたのアカウントにログインできるようにパスワードを知りたいと言いました。管理者は、のユーザーとしてログインすることができます。のパスワードは知っていません。

ユーザーとしてログインする必要がある場合は、何かを変更する必要があると思いますか?さて、管理者は、ユーザーとしてデータを変更することができるはずです...

私はあなたのシステムを修正すると言うことができます。

+0

ほとんどの場合、私は同意します。しかし、私のユーザーはすでに自分のパスワードが何であるかを知る能力に慣れていて、電子メールでも回復しています。私は、トークンを持つシステムを使用して新しいトークンを作成することができますが、パスワードを取得することには複数の利点があります。 – ParoX

+0

あなたが聞いたことをするための安全な方法がないことを覚えておいてください。パスワードを取得できる場合は、攻撃者がパスワードを取得することもできます。 –