我一直在考虑用可能的 bcrypt 或类似的东西替换 SHA1 作为密码加密,我似乎无法找到一个分步、易于遵循的教程来实现这一点。我在 youtube 上做了一个快速教程,生成了以下代码:
$username = 'myusername';
$password = 'pa55w0rd';
$str = substr($username, 0, 6);
$salt = '$2a$12$rU8E3fsI9rsKh3V2'.$str.'$';
$pass = crypt($password, $salt);
echo $salt . '<br>' . $pass;
当我在浏览器中运行代码时,得到输出:
$2a$12$rU8E3fsI9rsKh3V2myuser$
$2a$12$rU8E3fsI9rsKh3V2myuseeMSOT1BADLFs/ncqHx5aG2q953uqp.Tu
问题 1:
我是否正确假设两个字符串都是为用户生成的,并且两个字符串都需要存储在例如用户表中作为列“salt”和“pass”?
问题2:
为什么看起来用户名的一部分在 salt 和 pass 中是可见的?这是正常的,还是我需要采取一些额外的步骤来消除这种情况?
问题 3:
这种散列密码的方法是否比 md5 和 sha1 更安全,还是我应该使用更好的方法?
任何建议表示赞赏..