[PHP] PHP ver5.4以下で、password_verify($pass, $hash)の処理を行う代替処理

PHP
password_verify()関数は、PHP ver5.5以上から使える機能です。 それ以前で使用する場合は、以下のfunctionを実装して、代替処理として使うようにしましょう。

ソースコード

function password_verify($password, $hash) { if (!function_exists('crypt')) { trigger_error("Crypt must be loaded for password_verify to function", E_USER_WARNING); return false; } $ret = crypt($password, $hash); if (!is_string($ret) || $this->strlen($ret) != $this->strlen($hash) || $this->strlen($ret) <= 13) { return false; } $status = 0; for ($i = 0; $i < $this->strlen($ret); $i++) { $status |= (ord($ret[$i]) ^ ord($hash[$i])); } return $status === 0; } function strlen($binary_string) { if (function_exists('mb_strlen')) { return mb_strlen($binary_string, '8bit'); } return strlen($binary_string); }