UPDATE:MD5没有给出正确的散列?
响应FOUND AT:
我想用我的论坛凭据(我使用Invision电源板)进行分离页面 ,所以我开始研究如何对密码进行操作。
主要是对会员表,你有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);
$盐来自于数据库和我有呼应到我的网页,以确保它是正确的盐为好。
在IPB代码继续还有:
if ($member['members_pass_hash'] == self::generateCompiledPasshash($member['members_pass_salt'], $md5_once_password))
{
return true;
}
else
{
return false;
}
并回到初始一段代码我从IPB贴吧意味着密码与md5(md5($salt) . $md5_once_password)
members_pass_hash
匹配
任何想法,我可能做错了,以使密码不匹配?
编码的地方或任何东西?
更新与hashs来进行测试:
这一个正常工作:
salt: Do.|O
password: fsk23478cf
hash: f3f3c75110ea9a27a1c01e580676997f
这一个不工作,不知道为什么又:
salt: ppxps
password: fsk23478cf!*
hash saved by the forum: d060c2fb78c5b8a9e9d303c7b4fab456
hash created by my aap: 0df0c7f24f7f79bd7ad8e501f5447986
UPDATE2:
指责问题是exclamation mark
上的密码,但仍不知道是什么原因造成的,以及如何解决。
密码与!
将无法正常匹配,并且现在我想看看论坛做什么特别的!
,我还没有找到,所有我所发现的是,它并修剪密码字段和那么md5就像上面说的那样。
这有点不清楚。你是说你用两个不同的代码计算散列,结果不匹配? –
@Oli查尔斯沃斯出于某种原因是的,这就是我想找出来的。像这样的代码都是一样的,但哈希从不匹配相同的密码和从数据库中保存的盐。 – Prix
好的。你可以发布一个最小的,自包含的代码示例来演示这个问题吗? –