2

現在、MD5 と SHA1 を使用してユーザーのパスワードをデータベースに保存していますが、パスワードをプレーン テキストに戻す方法がわかりません。パスワードの暗号化に使用したのと同じコードをロールバックしようとしましたが、エラーが発生します。

パスワードの暗号化に使用しているコード:

   $hashedpassword = md5(md5(sha1(sha1(md5($normalpassword)))));

私はこのように戻って同じことをしようとしました

   $normalpassword = md5(md5(sha1(sha1(md5($hashedpassword)))));

それから私はそれが何かおかしいことに気づきました:( !!助けてください...

4

4 に答える 4

17

MD5とSHA-1は一方向のハッシュ関数です。つまり、ハッシュ値から元の文字列を取得することはできません。

于 2012-08-29T08:54:05.030 に答える
4

できません。ハッシュは1つの方法です。ログインフォームで入力の新しいハッシュを生成し、それが保存されているハッシュと等しいかどうかを確認する必要があります。

于 2012-08-29T08:55:05.707 に答える
4

ハッシュは暗号化ではありません。

MD5 や SHA1 などのハッシュ関数は元に戻すことができず、検証のみが可能です。攻撃者はハッシュを使用してクリアなパスワードを取得できないため、これが通常、ハッシュ関数を使用するポイントです (レインボー テーブルを使用するなどの他の攻撃は可能です)。

詳細については、http: //en.wikipedia.org/wiki/Cryptographic_hash_functionを参照してください。

ハッシュ化されたパスワードをデータベースに保存したい場合は、PHPassをご覧ください。これは、php が現在可能な限りパスワードをハッシュして検証するための優れたクラスであり、最新の php ベースの Web アプリケーションで広く使用されています。

于 2012-08-29T08:56:24.593 に答える
2

最終的にそれらを取り戻したいのに、なぜそれらを暗号化しているのですか? ハッシュは、パスワードをプレーンテキストに戻すことができないという理由で正確に使用されます。

それらを元に戻したい場合は、対称暗号を使用してください。

于 2012-08-29T08:55:22.050 に答える