私は現在、PHP の新しい(v5.5 の一部としてリリースされる) パスワード処理 API を利用する Web アプリケーションを実装しています。本当に良いと思いますpassword_get_info()
が、与えられたハッシュの計算で使用されるソルト値を返さない理由を誰かが知っているのだろうか? RFCは、問題の関数がソルトを返さないことを明示的に述べていますが、その理由についての説明はありません。
2 番目の要素は「オプション」です。これには、使用されるソルトを除いて、ハッシュ アルゴリズムによって使用されるオプションが含まれます。
ユーザーのパスワードの有効期限が切れたときに、現在のパスワードと同じパスワードを再送信していないことを確認する必要があるためです。これを行う唯一の方法は、新しいパスワードをハッシュし、同じアルゴ、コスト、およびソルトを使用して、結果のハッシュを現在 DB にあるものと比較することです。アルゴとコストはpassword_get_info()
関数によって返されますが、ソルトでは返されません。現時点ではsubstr($hash, 7, 22)
、ソルト値を取得するために使用していますが、これは明らかにアルゴリズム固有のものであり、それ以外の場合は非常に使いやすく強力な API を使用する目的を無効にします (新しいアルゴリズムの使用を開始すると、ソルトの位置が非常にうまくいく可能性があります)。変化する)。
編集:私は馬鹿でした.ハッシュを再構築して結果のハッシュを比較する必要はありませんでしたがpassword_verify()
、FALSE
. それは私が病気で疲れているときに働くことを教えてくれます!