我一直在寻找替代SHA1作为密码加密的可能bcrypt或类似的东西,我似乎无法找到一步一步,容易遵循教程来实现这一点。 我没有在YouTube上的快速教程,产生了以下代码:用BCRYPT代替SHA1
$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”存储在例如users表中。
问题2:
为什么它看起来像用户名的一部分,是盐和传中可见?这是正常的,还是有一些额外的步骤,我需要采取消除这种情况发生?
问题3:
是这种方法的密码散列比MD5和SHA1更安全,或是否有更好的方法,我应该使用?
任何建议理解..
我有PHP 5.3.0 - 我应该升级到5.5,并使用这些功能呢?这是你推荐的吗?这些功能是否在幕后使用了bcrypt? –
@ DJDonaL3000我链接的实现在PHP 5.3中运行良好,因此您不必升级。如果你在'password_hash'(第二个参数)中指定它,它使用bcrypt。 –
链接的PHP实现在5.3.7+上运行。并且*可能*用于带有后端修复的实现。但是,如果您仍然使用5.3.0,我强烈建议尽可能升级到最新的5.3.x版本。 – PeeHaa