我有自己的小网站并使用 sha1 加密,现在我尝试将其连接到 SMF 论坛,但 sha1 代码不一样?
我的代码
$password = "thisisatestpass";
$encrypted_password=sha1($password);
echo $encrypted_password; //03d858ce5f3b29b153b0392f196cff6f6e8684d0
SMF: 78481983d348ce4fbfabaccbb59af8ea95471f0c
我有自己的小网站并使用 sha1 加密,现在我尝试将其连接到 SMF 论坛,但 sha1 代码不一样?
我的代码
$password = "thisisatestpass";
$encrypted_password=sha1($password);
echo $encrypted_password; //03d858ce5f3b29b153b0392f196cff6f6e8684d0
SMF: 78481983d348ce4fbfabaccbb59af8ea95471f0c
根据这个线程,SMF 在通过 sha1 之前使用小写用户名对密码进行加盐处理。
尝试sha1(strtolower($your_username) . $password);
您需要找到使用的盐,然后尝试使用
sha1($the_salt.$password);
您应该尝试使用 phpMyAdmin 在 SMF 使用的表中查找散列。而且根据我在 smf 支持论坛上看到的内容,使用与钩子的替代集成必须更加健壮(请记住以前版本中对散列所做的更改)
据我所知,SMF 使用盐作为哈希值。因此,尝试在数据库中查找盐。
查看 SMF 2.0.8 的源代码(Profile-Modify.php)可以看到密码生成如下:
// Go then.
$passwd = sha1(strtolower($cur_profile['member_name']) . un_htmlspecialchars($_POST['passwrd1']));
请注意,您需要 SMF un_htmlspecialchars()函数才能获得 100% 正确的结果。
我明白了,您不需要 SALT 来执行此操作,您只需要用户名和密码即可。
PHP 代码如下所示:
$username = "name";
$password = "pass";
$login = sha1($username.$password);
我要求这个,我只需要一些时间来尝试很多方法,然后这个就奏效了。谢谢大家:)