私はペットプロジェクトに取り組んでおり、ユーザーサインアップサポートを追加したいと思っています。調査の結果、ハッシュ化されたパスワードとソルトをデータベースに保存し、元のパスワードは保存しないことにしました。しかし、私はステップが何であるか、そしてどのような順序であるかについて混乱しています。以下は私の仮定です:
サインアップ
- クライアントはユーザー名とパスワードをサーバー(https)に送信します
- サーバーはパスワードを取得し、ランダムなソルトを生成します
- Base64はソルトをエンコードします
- stringifysaltでパスワードをハッシュします
- Base64はパスワードをエンコードします
- パスワードとソルトをデータベースに保存します
ログイン
- クライアントはユーザー名とパスワードをサーバー(https)に送信します
- サーバーはユーザー名とパスワードを取得し、データベースからハッシュされたpswとsaltを検索します
- ソルトを使用してパスワードをハッシュし、base64で結果をエンコードします
- パスワードをデータベース内のハッシュされたpswと比較します
- 一致する場合は、ユーザーを認証します
私は自分のシステムを前提として実装していますが、すべてが機能しているようです。ただし、base64エンコーディング部分についてはよくわかりません。パスワードとソルトをバイナリから文字列にエンコードする目的は何ですか?この手順をスキップできますか?そして、私の想定したプロセスが間違っている場合、正しい手順は何ですか?
PS私はサーバーとしてexpress.jsを使用し、データベースとしてmysqlを使用しています