Because the default encryption method for the Laravel5 password is
bcrypt, want to let YII2 also use this encryption way, how to do? Google is hard to find information.
Reply content:
Because Laravel5 password is the default encryption method bcrypt , I want to let YII2 also use this encryption method, how to do? Google is hard to find information.
public function Generatepasswordhash ($password, $cost = null) {if ($cost = = = null) {$cost = $this->passwordhashcost; } if (Function_exists (' Password_hash ')) {/** @noinspection phpundefinedconstantinspection */Return Pass Word_hash ($password, Password_default, [' cost ' = = $cost]); } $salt = $this->generatesalt ($cost); $hash = Crypt ($password, $salt); Strlen () is safe since crypt () returns only ASCII if (!is_string ($hash) | | strlen ($hash)!==) {throw new Exception (' Unknown error occurred while generating hash. '); } return $hash;}
public function validatePassword($password, $hash){ if (!is_string($password) || $password === '') { throw new InvalidParamException('Password must be a string and cannot be empty.'); } if (!preg_match('/^\$2[axy]\$(\d\d)\$[\.\/0-9A-Za-z]{22}/', $hash, $matches) || $matches[1] < 4 || $matches[1] > 30 ) { throw new InvalidParamException('Hash is invalid.'); } if (function_exists('password_verify')) { return password_verify($password, $hash); } $test = crypt($password, $hash); $n = strlen($test); if ($n !== 60) { return false; } return $this->compareString($test, $hash);}
/** * @var string strategy, which should be used to generate password hash. * Available strategies: * - 'password_hash' - use of PHP `password_hash()` function with PASSWORD_DEFAULT algorithm. * This option is recommended, but it requires PHP version >= 5.5.0 * - 'crypt' - use PHP `crypt()` function. * @deprecated Since version 2.0.7, [[generatePasswordHash()]] ignores [[passwordHashStrategy]] and * uses `password_hash()` when available or `crypt()` when not. */
也就说在2.0.7之后就默认会使用`password_hash`,如果不存在此方法会使用`crypt`