这方法可取,这样需要加一个字段来表示是用什么加密方式加密的密码。
$sql = "SELECT username, password, encry_type from user where username = '".$_POST["username"]."'"; $r = $db->findOne($sql); if($r){ if($r["encry_type"] == "md5"){ if($r["password"] == md5($_POST["password")){ // 登录成功 $sql = "UPDATE user SET password = '".sha1($_POST["password")."', encry_type = 'sha1' WHERE username = '"..$_POST["username"]."'"; $db->query($sql); }else{ // 登录失败 } }else if($r["encry_type"] == "sha1"){ if($r["password"] == sha1($_POST["password")){ // 登录成功 }else{ // 登录失败 } } }
两次加密吧,更安全。
md5是不可逆加密,只有获得原始密码,才能改为sha1
######md5是单向hash,sha1是更强的单向hash,当然可以。本来认证用户的秘密就和明文无关的。######md5和sha-1不是加密算法,他们是信息摘要,单向的生成一段摘要码,只能通过碰撞算法之类的去猜,无法解密。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。