2014-07-20 33 views
0

我正在寻找可以加密该应用程序特有的应用程序密码的选项。例如,如果salt更改,相同的数据库将不起作用应用程序的Security.salt通常是唯一的。CakePHP 2.5x密码哈希。安全类或SimplePasswordHasher?

This link显示new SimplePasswordHasher(['hashType' => 'sha256'])->has($data)

然而,当我检查安全类原料药,我看到this function这是一种静态的功能,我可以提供SHA256和默认盐真实的例子。我没有使用河豚。

AuthComponent::password()已弃用,所以请不要提示。

哪种方式更有效Cake

+1

文档通常不会说谎。 http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#hashing-passwords是事实。 – mark

+0

我发布了答案。不过,我仍然可以提供'blowfish'和hash set为true。这不应该成为一个问题吗? – Karma

+0

不要这样做:)提供有效的输入。或者切换PasswordHasher类。 – mark

回答

0

在您的身份验证模式:

public function beforeSave($options = array()) { 
    parent::beforeSave(); 
    if (!empty($this->data['Model']['password'])) { 
     $this->data['Model']['password'] = Security::hash($this->data['Model']['password'], 'sha256', true); 
    } 
    return true; 
} 
+0

已过时。 – mark

+0

我很抱歉,但这是如何过时?而不是使用$ passwordHasher = new SimplePasswordHasher(array('hashType'=>'sha256'));我认为调用一个静态方法会降低迭代计数,并且可能会导致数据不稳定。因此 - 一些性能改进?让我在Github上发帖 – Karma

+0

查看你打开的[无效问题](https://github.com/cakephp/cakephp/issues/4043);)那里的答案。 – mark