_crypt()使用 $ 2a $ ,但建议使用 $ 2y $ 而不是 $ 2a $ 正如人们可以在这里阅读的那样,http://www.php.net/security/crypt_blowfish.php。似乎在Cakephp 2.x中不会修改_crypt(),因为它已经在Cakephp 3.0中进行了修改。
这是 Cakephp 2.4.5 :
protected static function _crypt($password, $salt = false) {
if ($salt === false) {
$salt = self::_salt(22);
$salt = vsprintf('$2a$%02d$%s', array(self::$hashCost, $salt));
}
if ($salt === true || strpos($salt, '$2a$') !== 0 || strlen($salt) < 29) {
trigger_error(__d(
'cake_dev',
'Invalid salt: %s for %s Please visit http://www.php.net/crypt and read the appropriate section for building %s salts.',
array($salt, 'blowfish', 'blowfish')
), E_USER_WARNING);
return '';
}
return crypt($password, $salt);
}
这是来自 Cakephp 3.0 的_crypt():
protected static function _crypt($password, $salt = false) {
if ($salt === false) {
$salt = static::_salt(22);
$salt = vsprintf('$2y$%02d$%s', array(static::$hashCost, $salt));
}
if ($salt === true || strpos($salt, '$2y$') !== 0 || strlen($salt) < 29) {
throw new Error\Exception(sprintf(
'Invalid salt: %s for blowfish Please visit http://www.php.net/crypt and read the appropriate section for building blowfish salts.',
$salt
));
}
return crypt($password, $salt);
}
如果我使用Cakephp 3.0中的_crypt()代码覆盖Cakephp 2.4.5中的_crypt(),我会破坏什么?它们几乎是一样的。 我是Cakephp的新手,需要一些建议。