nutail2016/01/27 04:13以下の関数を通してハッシュ化しているのですが、同じパスワードでも ハッシュ化された値が変わるので整合がとれません。 //パスワードのハッシュ化 public function getHashedPassword($password) { $passwordHasher = new BlowfishPasswordHasher(); $password = $passwordHasher->hash($password); return $password; } 良いアイデアがあればよろしくお願いします。
KatsumiTanaka2016/01/27 06:13BlowfishPasswordHasher()クラスを試してみましたが、同一のパスワード文字列を使用しているにも関わらず、ハッシュ化された文字列が異なりますね BlowfishPasswordHasher()の内部を追っていくと、最終的にPHPのcrypt() 関数でハッシュ値を取得しているのですが、以下に示してあるようにバージョンによってバグがあるようです。 (ちなみに、上手く行かない自分の環境はPHP5.6.3です) nutailさんの環境のPHPのバージョンは、どうでしょうか? http://php.net/manual/ja/function.crypt.php
nutail2016/01/27 08:40ありがとうございます。 別の解決策を見つけました。 $passwordHasher->check($check_pass, $current_pass)のように BlowfishPasswordHasher()クラスにハッシュ化前の値が同一か判断できるメソッドがあるようです。 値はその都度変わりますが、ハッシュ化前の値が同一か判断できるようです。 一緒にご検討いただきありがとうございました。
KatsumiTanaka2016/01/27 09:57言葉が足りなくて申し訳ない そのメソッドも試してみたのですが、以下に示すように平文のパスワードをハッシュ化して、ハッシュ化済みのパスワードと比較してします public function check($password, $hashedPassword) { return $hashedPassword === Security::hash($password, 'blowfish', $hashedPassword); } ハッシュ化ということは、非可逆に暗号化されることなので、平文に戻すことはできません
KatsumiTanaka2016/01/28 05:37CakePHP内部をいろいろと確認してみましたが、BlowfishPasswordHasherクラスのcheck関数を使用することで問題ないようです。 というか、これを使用しないとハッシュ化時のソルトがランダムになってしまうので、同じ文字列で取得したハッシュ値が異なることになりますね。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/27 04:13
2016/01/27 06:13
2016/01/27 08:40
2016/01/27 09:57
2016/01/28 05:37