如何在导入用户数据时为 md5 哈希生成 vBulletin 密码盐?

Tom*_*Tom 2 passwords salt vbulletin password-protection

我正在将用户从旧数据库转移到 vBulletin 数据库。

我想要一个脚本来执行此操作,否则将花费很长时间。

我存储了所有用户的密码,就像 md5(password) 一样

但当然,由于盐等原因,这不适用于 vBulletin。

所以我的代码是这样的:

<?Php
mydatabase_connect();
$select=mysql_query("SELECT * from `users`");
while($user=mysql_fetch_array($select)) {

    forum_connect();
    $check=mysql_query("SELECT * from `user` where `username` = '{$user[username]}'");
    if(mysql_num_rows($check)>="1") {
        echo "fail";
        }else{
        $insert=mysql_query("INSERT into `user` SET `username` = '{$user[username]}', `password` = '{$user[password]}', `email` = '{$user[email]}'");
        if($insert) {
            echo 'success';
            }else{
            echo 'fail';
        }
    }
    mydatabase_connect();
}
?>
Run Code Online (Sandbox Code Playgroud)

我如何更改它以与 vBulletin 一起使用 - 这样我就可以设置 vBulletin 用户。password字段和 vBulletin 用户。salt正确。请记住我的 $user[password] 或users. password存储为真实文本密码的 md5 哈希值。

谢谢!

Con*_*roe 5

我不知道这个答案是否太晚了,但您应该能够自动将您的密码转移到 vBulletin 中。

vBulletin 以这种方式生成其哈希值:

$hash = md5(md5($plaintext) . $salt);
Run Code Online (Sandbox Code Playgroud)

因此,要转移用户,请大致执行以下操作:

$salt = /* generate salt */;
$vb_hash = md5($your_old_hash . $salt);
Run Code Online (Sandbox Code Playgroud)

为了方便自己,请使用 vBulletin 的盐生成方法。是在vB_DataManager_User班级里。