如何更改cakephp中的默认哈希密码

时间:2016-12-22 03:52:09

标签: cakephp hash sethash

我有一个现有的网站(功能),现在我需要通过cakephp升级我的网站,并将旧数据库导入新数据库。

Cakephp有哈希和密码的默认算法,我需要更改算法。

我的旧网站使用此代码作为密码:
$password_hash = hash('sha256', $password);

如何设置cakephp密码hash auth:hash('sha256', $password),直到我的网站用户可以登录cakephp脚本?

请帮忙......

cakephp ver: CakePHP(tm) v 0.2.9<br><br>

注意:道歉对于弱英语

2 个答案:

答案 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)对其进行更改。