かつお君へ PHPのcryptでログイン処理を作成にて指摘を頂いたので、内容を再度まとめました。
以下を使うとSALTを固定値で指定しなくてもハッシュを作成出来ます。
ユーザ作成画面にて、入力されたパスワードにpassword_hash()
を使います。
返り値のhashをpassとして保存します。
以前cryptのCRYPT_BLOWFISH
でパスワードを生成していたので、アルゴリズムはPASSWORD_BCRYPT
を指定してみました。
App/Controller/User.php
public function registUser() {
if ($this->request->is('post'))
{
$this->loadModel('User');
$this->request->data['User']['pass'] = password_hash($this->request->data['User']['pass'], PASSWORD_BCRYPT);
$this->User->save($this->request->data);
}
}
照合の際は、ユーザーIDでデータをSELECTし、password_verify()
に先ほどのhashとログイン時に入力されたpassを渡すとbooleanが返ってきます。
App/Model/User.php
〜
public function checkUserLogin($id, $pass) {
$user = $this->find('first', array('conditions' => array('id' => $id)));
return password_verify($pass, $guide['User']['pass']);
}