CakePHP BlowFish 比较密码

CakePHP BlowFish Compare Password

在我的模型用户中的 beforeSave 函数中,我使用河豚来加密我的密码,如下所示:

$passwordHasher = new BlowfishPasswordHasher();
            $this->data[$this->alias]['password'] = $passwordHasher->hash(
                $this->data[$this->alias]['password']
            );

但我不知道如何解密它以便将密码与我的自定义登录名进行比较。请帮忙!!!

你永远无法解密回来。这就是它安全的原因。

创建用户时,您对密码进行哈希处理并将其存储在数据库中。然后,当用户尝试登录时,再次哈希他输入的密码。如果这与数据库中的匹配,则密码正确。

只需用户在注册时输入密码12345,这会散列为54321。你永远不应该知道他最初输入的是12345。因此,如果他在登录时输入 12345,它将再次散列为 54321 并且匹配,因此他输入的密码是正确的。如果他输入了错误的密码,它将散列为其他内容(即 53421),因此它不会匹配。

在 linux bash 中你可以使用下面的命令来查看 1 将始终具有相同的

echo 1 | sha1sum

首先获取保存的密码,然后就可以使用这个了

$newHash = Security::hash($current_pass, 'blowfish', $pass_stored);

然后比较

$newHash === $pass_stored

此处存储密码用作盐