Web 上にパスワードを保存するための現在のベスト プラクティスは、sha256 やその他のハッシュ アルゴリズムではなく、bcrypt を使用することです。Bcrypt は素晴らしいように思えますが、私が見るところ 1 つの欠点があります: 作業係数 10 を使用するパスワードで満たされたデータベースがあり、計算能力が向上したために作業係数を 12 に増やしたい場合、これを行う方法がありません。ユーザーのパスワードを知らなくても、ユーザーが再度ログインするまで待機します。これは、アカウントを放棄したユーザーに問題を引き起こします。
代わりの解決策は、sha256 を使用して 2^(work factor) に等しい数のパスを実行することだと私には思えます。これを行うと、作業係数を増やしたいときに、保存されているすべてのパスワードのパス数の違いを実行できます。
まさにそれを行うためのコードを少し書きました。これが良いアイデアかどうかについて、皆さんからのフィードバックを得たいと思います。