我有一个vBulletin数据库,我正在尝试将用户切换到自定义系统,我已经转换了用户名和密码,然后我将双MD5密码转换为SHA256,但我留下了一个问题,就是盐。
最简单的方法是转换旧的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 :(得分:0)
您是否了解PHP函数password_hash(),这是散列密码的推荐方法。它会自动为每个密码生成一个加密安全的盐,并将其包含在生成的60个字符的字符串中。
$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa
上面的示例是password_hash()的可能结果,查看部分$nOUIs5kJ7naTuTFkBy1veu
,这是生成的盐,函数password_verify()将使用它来检查密码。
您不必再担心盐了,不需要额外的数据库字段,只需存储哈希就可以了!
迁移密码的最简单方法是等待用户下次登录。当他输入密码时,您可以检查散列是否已经迁移,然后使用password_verify()进行检查。如果尚未迁移,请使用旧的vBulletin代码进行检查,如果密码正确,则使用password_hash()生成新哈希并存储。