更新:
回复发现于:
我想使用我的论坛凭据(我正在使用 Invision Power Board)制作一个单独的页面,所以我开始研究密码的工作原理。
主要在 members 表上,您有 members_pass_hash 和 members_pass_salt 表,加密完成如下:
/**
* Generates a compiled passhash.
* Returns a new MD5 hash of the supplied salt and MD5 hash of the password
*
* @param string User's salt (5 random chars)
* @param string User's MD5 hash of their password
* @return string MD5 hash of compiled salted password
*/
static public function generateCompiledPasshash( $salt, $md5_once_password )
{
return md5( md5( $salt ) . $md5_once_password );
}
之后我开始做我的页面,但无论我做什么,密码都不会与数据库中的密码匹配。
即使MD5(CONCAT(MD5(members_pass_salt),MD5('mypass'))
在 mysql 上直接使用也不能给我正确的值......
我也在社区和 ipb 的论坛上进行了搜索,但无法缩小这里可能出现的问题。
我产生密码的代码如下:
$password = $this->input->post('password');
$md5_once_password = md5($password);
$password_hash = md5( md5( $salt ) . $md5_once_password );
$salt 来自数据库,我已将其回显到我的页面以确保它也是正确的盐。
继续 IPB 代码还有:
if ( $member['members_pass_hash'] == self::generateCompiledPasshash( $member['members_pass_salt'], $md5_once_password ) )
{
return true;
}
else
{
return false;
}
回到我从 IPB 发布的初始代码,这意味着密码与members_pass_hash
成员表中的字段匹配md5( md5( $salt ) . $md5_once_password )
关于我可能做错什么以使密码不匹配的任何想法?
在某处或任何地方编码?
使用哈希进行更新以进行测试:
这个工作正常:
salt: Do.|O
password: fsk23478cf
hash: f3f3c75110ea9a27a1c01e580676997f
这个不工作,还不知道为什么:
salt: ppxps
password: fsk23478cf!*
hash saved by the forum: d060c2fb78c5b8a9e9d303c7b4fab456
hash created by my aap: 0df0c7f24f7f79bd7ad8e501f5447986
更新2:
解决exclamation mark
了密码问题,但仍然不知道是什么原因造成的以及如何解决。
密码!
将无法正确匹配,现在我正在尝试找出论坛是否对!
我没有找到的任何特殊内容进行了处理,我发现它确实修剪到密码字段,然后如上所述 md5 它.