我正在寻找一些关于更新我的密码系统的最佳实践的帮助或建议。我前一段时间使用php构建了一个登录系统(在我真的知道我在做什么之前),它所做的一切就是使用sha1加密密码,而我知道这些密码不安全或者不便于使用。在不影响当前用户的情况下更改密码结构
所以基本上就成功登录它是所有
$password = sha1($password1)
我想用我一直在使用最近一个不同的方法,它是利用crypt_blowfish的功能,像这样:
function generateHash($password_1){
if(defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH){
//echo "WE HAVE CRYPT BLOWFISH YAYA";
$salt = '$2y$11$'. substr(md5(uniqid(rand(), true)), 0, 22);
return crypt($password_1, $salt);
}//End If
}//End Function generateHash*/
在注册我加密密码: $ password_1 = $ _POST ['password_1']; //哈希密码 $ password = generateHash($ password_1);
然后在登录我用
$hashed_password = crypt($password_1, $entered_password)
if($hashed_password != $enter_password){
$error['password'] = 'The password or username you entered is incorrect.';
}else{
'Your Good to Go!'
}
我有很多的用户,并希望做出改变无缝的或至少非常少的影响到他们。这甚至有可能在没有他们注意到变化的情况下做到?任何帮助或建议,不胜感激。
感谢
你可以检查密码有多长,SHA1应该正好40个字符,如果是40个字符长,然后用老方法,并引导他们到修改密码页面,否则使用新的方法。 – Ian
是你的表有一个插入的日期列字段? –
是的我有一个自动时间戳列 – bilcker