ある程度まともなユーザーベースを持つPHPアプリケーションがあります。残念ながら、これはずっと sha1($password . $salt) を使用してきたので、bcrypt を優先してそれを捨てたいと思っています。Blowfish ハッシュを取得する良い方法をいくつか見つけましたが、使用すべき変換アプローチについてはまだ確信が持てません。ここに私のオプションがあります:
オプション1
ユーザーがログインするたびに、ハッシュが $2 で始まるかどうかを確認します。そうでない場合は、sha1 であると想定し、ユーザーが入力したパスワードを取得し、その bcrypt ハッシュを取得して、データベース内の古いハッシュを置き換えます。
オプション 2
これを行うために認証クラスを置き換えます。
$hash = password_hash("rasmuslerdorf", sha1($password . $salt));
そうすれば、変換が速くなります。
しかし、正直なところ、私はどちらのオプションもあまり好きではありません。どちらも、削除したいコードベースにレガシーチェックをまだ保持していることを示唆しています。
コーディング標準の観点から、上記の2つのうちどちらが優れているか提案はありますか? または、誰かがより良い解決策を持っていますか?