2013-10-25 22 views
0

我有一个vBulletin数据库,我试图切换用户到自定义系统,我已经转换用户名和密码,然后我将双MD5'd密码转换为SHA256,但我留下了一个问题,这是盐。MySQL/PHP的 - 数据库用户登录转换

什么是最简单的方法来转换旧的vBulletin盐,或检查密码是否正确,然后生成一个新盐他们第一次登录?

检查脚本:

$vbconvert = md5(md5($_POST["password"])); 
$check_password = hash('sha256', $vbconvert . $row['salt']); 
for($round = 0; $round < 65536; $round++) 
{ 
     $check_password = hash('sha256', $check_password . $row['salt']); 
} 

if($check_password === $row['password']) 
{ 

     $login_ok = true; 
} 

总之,什么是要么转换或创建一个新的盐的最简单的方法?

+0

我将离开“double md5'd”密码开始,然后创建一个新的数据库列,以跟踪用户是否有更新(SHA256)密码。如果他们不这样做,那么他们需要在登录时进行密码重置,从而更新密码和盐。这样,用户仍然可以登录,并且不必担心反向工程盐和散列。 – jpodwys

回答

0

你知道PHP函数password_hash(),推荐散列密码的方法。它会为每个密码自动生成密码安全的盐,并将其包含在60个字符的字符串中。

$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa 

上面的例子是password_hash的可能结果(),看看在该部分$nOUIs5kJ7naTuTFkBy1veu,这是所生成的盐,它会通过功能password_verify()被用于检查该密码。

你不用担心盐了,没有额外的数据库字段是必要的,只需存储散列,你很好!

迁移密码最简单的方法就是等待用户下次登录。当他输入密码时,可以检查哈希是否已经迁移,然后检查password_verify()。如果尚未迁移,请使用旧的vBulletin代码进行检查,如果密码正确,则使用password_hash()生成新的散列并存储它。

相关问题