如何解密cakephp中的哈希密码

时间:2017-11-08 10:09:16

标签: cakephp

模型

App::uses('SimplePasswordHasher', 'Controller/Component/Auth');
class AppModel extends Model {
public function beforeSave($options = array()) {
   if (!empty($this->data[$this->alias]['password'])) {
   $passwordHasher = new SimplePasswordHasher(array('hashType' => 'sha1'));
       $this->data[$this->alias]['password'] = $passwordHasher->hash(
       $this->data[$this->alias]['password']
       );
   }
   return true;
 }

因此,当我使用它时,它会对密码进行哈希处理,但是当我尝试登录时,我必须使用哈希值,而不是原始密码。然后只有它登录。

我在这里问过如何加密,但它无法帮助登录How to encrypt a password in cakephp 2.x version

1 个答案:

答案 0 :(得分:1)

使用在数据库中存储为哈希的密码登录时,您需要将相同的哈希方法应用于输入密码,并将其与存储在数据库中的密码进行比较: -

// Has the password supplied via the login form.
$inputHashedPassword = (new SimplePasswordHasher(['hashType' => 'sha1']))->hash($inputPassword);
// Compare hashed input with hashed password from the database.
if ($inputHashedPassword === $storedHashedPassword) {
    // Login
}

散列密码的重点在于它无法解密,因此只有输入密码的人才应该知道其原始值。因此,检查密码的唯一方法是检查散列值。

相关问题