我有一个现有的网站(功能),现在我需要通过cakephp升级我的网站,并将旧数据库导入新数据库。
Cakephp有哈希和密码的默认算法,我需要更改算法。
我的旧网站使用此代码作为密码:
$password_hash = hash('sha256', $password);
如何设置cakephp密码hash auth:hash('sha256', $password)
,直到我的网站用户可以登录cakephp脚本?
请帮忙......
cakephp ver: CakePHP(tm) v 0.2.9<br><br>
注意:道歉对于弱英语
答案 0 :(得分:0)
我假设您正在使用CakePHP 3.x,它默认使用bcrypt哈希算法。
要使用sha256,您可以创建自定义密码哈希类。
namespace App\Auth;
use Cake\Auth\AbstractPasswordHasher;
class Sha256PasswordHasher extends AbstractPasswordHasher
{
public function hash($password)
{
return sha256($password);
}
public function check($password, $hashedPassword)
{
return sha256($password) === $hashedPassword;
}
}
并将AuthComponent配置为使用您自己的密码hasher:
public function initialize()
{
parent::initialize();
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'passwordHasher' => [
'className' => 'Sha256',
]
]
]
]);
}
在此处阅读更多内容https://book.cakephp.org/3.0/en/controllers/components/authentication.html#hashing-passwords
答案 1 :(得分:0)
cakephp 2.x版本不支持SHA3-512,在cakephp 2.x版本中,我们可以在max SHA-512上使用。
您可以通过添加以下补丁,在app / Controller / AppController.php中进行更改来做同样的事情,
$this->Auth->authenticate = array(
'Form' => array(
'passwordHasher' => array(
'className' => 'Simple',
'hashType' => 'sha512' //passing sha512 as the hash type
)
)
);
如果您在更新哈希后提供了更改/重置密码的选项,则可以使用以下补丁接受具有更新的哈希的密码,
$ var = Security :: hash($ password,'sha512',true);
这里将使用sha512哈希算法,如果盐值即第三个参数设置为真实应用程序的盐值,则可以根据您的哈希要求(sha1 / sha256 / md5 / blowfish)对其进行更改。