mysql テーブル内のすべてのデータセットのパスワードを暗号化するにはどうすればよいですか?

mysql テーブル内のすべてのデータセットのパスワードを暗号化するにはどうすればよいですか?

ユーザー認証用に MySQL バックエンドを備えた ProFTPD サーバーを実行しています。

ユーザーのパスワードは現在プレーンテキストです。私の目標は、すべてのユーザーのパスワードを暗号化してデータベースに保存することです。

1 人のユーザーの 1 つのパスワードを暗号化したい場合は、次の SQL コマンドを入力できることがわかっています。

update users set password= md5('MyPassword') where password="myPassword"; 

しかし、すべてのユーザーのすべてのパスワードを暗号化するにはどうすればよいでしょうか?

誰かが私を助けてくれることを願っています。

答え1

update users set password= md5('MyPassword') where password="myPassword"; 

MD5をハッシュとして使用するのは安全ではありません。MD5は非推奨です。

安全なハッシュ アルゴリズムは PBKDF2、bcrypt、scrypt などです。さらに、すべてのハッシュ アルゴリズムは salt とともに使用する必要があります。@Gerald Schneider がこのトピックに関する非常に優れたリンクを投稿しました:https://security.stackexchange.com/questions/211/how-to-securely-hash-passwords

ここでの問題は、これらの保存ハッシュ アルゴリズムのいずれも、mysql に実装されていないことです。ProFTPD の mod sql モジュールには、PBKDF2 の認証モードがあります。ただし、mysql データベースで PBKDF2 ハッシュ パスワード、または別の安全なアルゴリズムでハッシュされたパスワードを OOTB で生成する方法はありません。

考えられる解決策としては、PHP を使用して HTML ページを作成することです。PHP には、安全なハッシュ パスワードを生成するための関数がデフォルトで実装されています。

私は ProFTPD フォーラムで、この問題に対する別の、おそらくより良い答えを知っている人がいないか尋ねました。 https://forums.proftpd.org/smf/index.php/topic,12110.0.html

はい、元の質問は、データベース内のすべてのパスワードを 1 つのコマンドで一度にハッシュするにはどうすればよいか、ということだったことは承知しています。しかし、まずは安全なハッシュ アルゴリズムを探す必要があると思います。

関連情報