2

私はこのチュートリアルを進めており、 ENCRYPT MySQL 関数を使用しています。

http://www.pixelinx.com/2010/10/creating-a-mail-server-on-ubuntu-using-postfix-courier-ssltls-spamassassin-clamav-and-amavis/

しかし、今、MySQL または php で暗号化されたパスワードを解読する方法の問題がありますか? 入力したパスワードが暗号化されたものと同じかどうかを比較したい。

どうすれば比較できますか?MySQL は ENCRYPT 関数で暗号化する必要があります!

検索していますが、 ENCRYPT MySQL 関数を復号化する方法が見つかりません...

4

3 に答える 3

15

ENCRYPT一方向ハッシュ アルゴリズムを使用しているため、DECRYPTパスワードを暗号化するという意味ではありません。ハッカーには、平文のパスワードを表示するオプションはありません。

データベース内のパスワードとユーザーが入力したパスワードを比較する必要がある場合は、次のようなクエリを使用します (準備されたクエリを使用)

SELECT * FROM `user`
WHERE `name` = 'hek2mgl` 
  AND `password` = ENCRYPT('user_input', `password`)

このENCRYPT関数は、ソルト自体がプレフィックスとして付けられた「ソルト化された」文字列を出力するため、暗号化されたパスワードをフィードバックすると、元のソルトが再供給されます。

于 2013-05-10T15:42:05.573 に答える
4

パスワードを復号化することはできません。パスワードは一方向暗号化で暗号化されています。

入力したパスワードを暗号化し、その結果を保存されている暗号化されたパスワードと比較する必要があります。

于 2013-05-10T15:41:54.537 に答える
0

パスワードを解読する必要はありません。ユーザーが正しいパスワードを送信したかどうかを確認するには、ユーザーが指定したパスワードを再暗号化して、データベースに保存されているパスワードと一致するかどうかを確認します。

さらに、単純なハッシュ関数で十分です (MD5 を避け、salt を利用して辞書やレインボー テーブル攻撃を防ぎます!)

于 2013-05-10T15:44:33.940 に答える