CakePHP2-密码哈希
我不得不将大量的用户数据导入一个新的应用程序,其中包括md5哈希密码。我告诉CakeAUTH使用MD5及其使用方法,但哈希密码与原始哈希不匹配 AuthComponent明确使用md5(使用xdebug通过登录过程进行调试) 在CakePHP2-密码哈希,cakephp,md5,Cakephp,Md5,我不得不将大量的用户数据导入一个新的应用程序,其中包括md5哈希密码。我告诉CakeAUTH使用MD5及其使用方法,但哈希密码与原始哈希不匹配 AuthComponent明确使用md5(使用xdebug通过登录过程进行调试) 在SimplePasswordHasher.php第52行中 $this->hash($password) 结果是md5哈希,但与我的原始哈希不匹配 如何解决这个问题?事实上 $this->hash($password); 正在做什么 Security::h
SimplePasswordHasher.php
第52行中
$this->hash($password)
结果是md5哈希,但与我的原始哈希不匹配
如何解决这个问题?事实上
$this->hash($password);
正在做什么
Security::hash($string, 'md5', true);
(src:)
因此,实际上,您并不是在做纯的
md5($string)
,而是在做salt和string的串联
如果您以前的应用程序不使用盐,我认为最简单的方法是将盐设置为空。不推荐,但也不能反转哈希
要设置salt,请编辑app/Config/core.php
:
Configure::write('Security.salt', '');
但不确定你是否会收到警告。值得一试。这很可能是因为您的应用程序使用了不同的salt(您的其他应用程序可能根本没有使用),请在您的应用程序中选中
安全性.salt
因此,要解决这个问题,你必须使用相同的盐,或者根本不用盐,尽管如果你问我,这些都不是一个好主意
我建议您强制用户创建新密码,并使用更安全的密码哈希算法,如bcrypt。看
为了记录在案,这可能是处理外来散列的最佳方式:
App::uses('AbstractPasswordHasher', 'Controller/Component/Auth');
class BackCompatPasswordHasher extends AbstractPasswordHasher {
public function hash($password) {
return md5($password);
// or using a custom salt if necessary
// return md5('the-other-apps-salt' . $password);
}
public function check($password, $hashedPassword) {
return $hashedPassword === $this->hash($password);
}
}
@gonzela2006在
app/Controller/Component/Auth/BackCompatPasswordHasher.php
中,请查看链接文档。