CakePHP BlowfishPasswordHasher密码因盐而无效?

CakePHP BlowfishPasswordHasher密码因盐而无效?,php,cakephp,authentication,bcrypt,blowfish,Php,Cakephp,Authentication,Bcrypt,Blowfish,我试图在cakephp站点上执行简单的身份验证教程,但当我尝试登录用户时,会收到“Invalid Salt”消息 密码正在加密并插入到数据库中 数据库列的长度足以容纳整个字符串 在CORE\Utility\Security.php\u crypt中,它检查我的salt是否以“$2y$”、“$2x$”或“$2a$”开头,但它们不。我正在用密码加密它们 if (isset($this->data[$this->alias]['password'])) { $passw

我试图在cakephp站点上执行简单的身份验证教程,但当我尝试登录用户时,会收到“Invalid Salt”消息

  • 密码正在加密并插入到数据库中
  • 数据库列的长度足以容纳整个字符串
在CORE\Utility\Security.php\u crypt中,它检查我的salt是否以“$2y$”、“$2x$”或“$2a$”开头,但它们。我正在用密码加密它们

if (isset($this->data[$this->alias]['password'])) {
        $passwordHasher = new BlowfishPasswordHasher();
        $this->data[$this->alias]['password'] = $passwordHasher->hash(
            $this->data[$this->alias]['password']
        );
    }

谁能告诉我为什么我的盐无效?我不明白为什么它们不以预期的字符串开头

您的盐无效(您已经确定无效),或者少于29个字符

//Cake/Utility/Security.php
if ($salt === true || $invalidCipher || 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 '';
}
//Cake/Utility/Security.php
如果($salt==true | |$invalidCipher | | strlen($salt)<29){
触发错误(
“蛋糕开发”,
'无效的盐:%s对于%s,请访问http://www.php.net/crypt 并阅读构建%s的相应部分。“,
数组($salt,'blowfish','blowfish')
),E_用户警告);
返回“”;
}
我想出来了


我的Php版本是5.2,为了让河豚正常工作,应该是5.3或更高版本。我把它改成了5.5,现在它运行得很好。耶

我的盐不是以正确的字符串开头的。我改写了我的问题。我不明白他们为什么不能正确启动?