パスワードを平文で保存すると、データベースが流出した瞬間にすべてのアカウントが露呈します。そのためパスワードはハッシュに変換して保存し、ログイン時に入力値のハッシュを比較します。原文を保存しないので、流出してもすぐにパスワードを知られることはありません。
しかし、単純なSHA-256ハッシュだけでは不十分です。同じパスワードは常に同じハッシュを返すため、攻撃者はよくあるパスワードのハッシュをあらかじめ計算したレインボーテーブルで大量に照合できます。これを防ぐには、アカウントごとにランダムな値であるソルト(salt)を加えてハッシュ化する必要があります。
速度も問題です。SHA-256は非常に高速なので、攻撃者は毎秒数十億個を推測できます。そのためパスワードには意図的に遅いbcrypt・scrypt・Argon2のような専用ハッシュを使います。これらは反復回数・メモリコストを調整することで、総当たり攻撃を大きく遅らせます。
まとめると、パスワード保存の3原則はソルト + 遅い専用ハッシュ + 十分なコストパラメータです。通常のSHA-256/512はファイルの整合性・署名には適していますが、パスワード保存にはArgon2のような専用アルゴリズムを使用してください。