私はこのチュートリアルを進めており、 ENCRYPT MySQL 関数を使用しています。
しかし、今、MySQL または php で暗号化されたパスワードを解読する方法の問題がありますか? 入力したパスワードが暗号化されたものと同じかどうかを比較したい。
どうすれば比較できますか?MySQL は ENCRYPT 関数で暗号化する必要があります!
検索していますが、 ENCRYPT MySQL 関数を復号化する方法が見つかりません...
私はこのチュートリアルを進めており、 ENCRYPT MySQL 関数を使用しています。
しかし、今、MySQL または php で暗号化されたパスワードを解読する方法の問題がありますか? 入力したパスワードが暗号化されたものと同じかどうかを比較したい。
どうすれば比較できますか?MySQL は ENCRYPT 関数で暗号化する必要があります!
検索していますが、 ENCRYPT MySQL 関数を復号化する方法が見つかりません...
ENCRYPT
一方向ハッシュ アルゴリズムを使用しているため、DECRYPT
パスワードを暗号化するという意味ではありません。ハッカーには、平文のパスワードを表示するオプションはありません。
データベース内のパスワードとユーザーが入力したパスワードを比較する必要がある場合は、次のようなクエリを使用します (準備されたクエリを使用)
SELECT * FROM `user`
WHERE `name` = 'hek2mgl`
AND `password` = ENCRYPT('user_input', `password`)
このENCRYPT
関数は、ソルト自体がプレフィックスとして付けられた「ソルト化された」文字列を出力するため、暗号化されたパスワードをフィードバックすると、元のソルトが再供給されます。
パスワードを復号化することはできません。パスワードは一方向暗号化で暗号化されています。
入力したパスワードを暗号化し、その結果を保存されている暗号化されたパスワードと比較する必要があります。
パスワードを解読する必要はありません。ユーザーが正しいパスワードを送信したかどうかを確認するには、ユーザーが指定したパスワードを再暗号化して、データベースに保存されているパスワードと一致するかどうかを確認します。
さらに、単純なハッシュ関数で十分です (MD5 を避け、salt を利用して辞書やレインボー テーブル攻撃を防ぎます!)