MySQL/PHP-数据库用户登录转换
我有一个vBulletin数据库,我正在尝试将用户切换到自定义系统,我已经转换了用户名和密码,然后我将双MD5'd密码转换为SHA256,但我还有一个问题,那就是salt 转换旧的vBulletin salt,或者检查密码是否正确,然后在首次登录时生成新的salt,最简单的方法是什么 正在检查脚本:MySQL/PHP-数据库用户登录转换,php,mysql,md5,salt,sha256,Php,Mysql,Md5,Salt,Sha256,我有一个vBulletin数据库,我正在尝试将用户切换到自定义系统,我已经转换了用户名和密码,然后我将双MD5'd密码转换为SHA256,但我还有一个问题,那就是salt 转换旧的vBulletin salt,或者检查密码是否正确,然后在首次登录时生成新的salt,最简单的方法是什么 正在检查脚本: $vbconvert = md5(md5($_POST["password"])); $check_password = hash('sha256', $vbconvert . $row['salt
$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;
}
$vbconvert=md5(md5($\u POST[“password”]);
$check_password=hash('sha256',$vbconvert.$row['salt']);
对于($round=0;$round<65536;$round++)
{
$check_password=hash('sha256',$check_password.$row['salt']);
}
如果($check_password===$row['password']))
{
$login\u ok=true;
}
简而言之,转换或创建新salt的最简单方法是什么?您知道PHP函数吗,建议使用散列密码的方法。它会自动为每个密码生成加密安全的salt,并将其包含在生成的60个字符串中
$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
上面的示例是password_hash()的可能结果,请查看部分$nOUIs5kJ7naTuTFkBy1veu
,这是生成的salt,函数password_verify()将使用它检查密码
你不必再担心盐了,不需要额外的数据库字段,只要存储散列就可以了
迁移密码的最简单方法是等待用户下次登录。当他输入密码时,您可以检查散列是否已经迁移,然后使用密码\u verify()进行检查。如果尚未迁移,则使用旧的vBulletin代码进行检查,如果密码正确,则使用password_hash()生成新的哈希并将其存储。我将保留“double md5'd”密码,然后创建一个新的DB列,跟踪用户是否有更新的(SHA256)密码。如果没有,则需要在登录时重置密码,以更新密码和salt。这样,您的用户仍然可以登录,您不必担心反向工程和哈希。