CakePHP和MD5登录系统

CakePHP和MD5登录系统,cakephp,cakephp-2.0,md5,cakephp-2.3,Cakephp,Cakephp 2.0,Md5,Cakephp 2.3,对于CakePHP应用程序,我必须使用MD5算法来存储登录密码 我的问题是,我不能正确地将提交的登录密码转换为md5 例如,如果密码为euro,则其md5为2acae8be44a70913481e66dd2cd3f761 但CakePHP将其转换为f85378844044678d28f1a1f306d4af50,因此用户无法登录应用程序(或者我猜这是一个问题) 要启用MD5密码,我在AppController中添加了: public function beforeFilter() { S

对于CakePHP应用程序,我必须使用MD5算法来存储登录密码

我的问题是,我不能正确地将提交的登录密码转换为md5

例如,如果密码为euro,则其md5为2acae8be44a70913481e66dd2cd3f761

但CakePHP将其转换为f85378844044678d28f1a1f306d4af50,因此用户无法登录应用程序(或者我猜这是一个问题)

要启用MD5密码,我在AppController中添加了:

public function beforeFilter() {
    Security::setHash('md5');
}
此外,我还尝试通过以下方式检查登录功能:

function login() {

    if ($this->request->is('post')) {

        pr(AuthComponent::password($this->data['Company']['password']));
        // this returns f85378844044678d28f1a1f306d4af50

        // etc...

    }

}

你能不能给我一些线索,我在这方面做错了什么?在这种情况下,我必须使用MD5。

在这段代码中,使用
MD5
加密密码,与
AuthComponent::password()
相比,这两种方法都是不同的,在这两种情况下都使用
AuthComponent::password()

以下是如何使用的示例:-

在模型中添加以下代码行。 对authpassword使用auth组件

App::uses('SimplePasswordHasher', 'Controller/Component/Auth');
在保存功能之前添加代码以加密密码:-

public function beforeSave($options = array()) {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password(
$this->data[$this->alias]['password']
);
}
return true;
}
使用型号的此功能比较密码:-

public function checkCurrentPassword($data) {
$this->id = AuthComponent::user('id');
$password = $this->field('password');
return(AuthComponent::password($data['current_password']) == $password);
}

可能是因为您在boostrap.php中设置了
salt
,所以在您的示例中,它将是
md5($salt.$password)
而不是
md5($password)
查看
lib/Cake/Utils/Security
,您可以将
$salt
设置为
null
Nope,没有变量$salt(甚至单词salt)在boostrap.phpcheck中,选择Security.salt的值。例如:
debug(Configure::read('Security.salt')它在core.php中,搜索安全性。不要使用md5,因为它是不安全的。MD5是散列的一种形式,而不是加密,散列不能被逆转。