开发者社区> 问答> 正文

md5 转 sha-1:报错

我大家一个问题,之前用户的密码是用md5加密存储的,没有明码,有没有可能转换为sha-1加密

展开
收起
kun坤 2020-06-06 14:26:45 465 0
1 条回答
写回答
取消 提交回答
  • 引用来自“冷血”的答案

    在用户登陆成功后,将密码明文用sha-1加密存储。

    这方法可取,这样需要加一个字段来表示是用什么加密方式加密的密码。

    $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{
             // 登录失败
         }
       }
    }



    ######+1######同问。我能想到的就是两次加密######不成######在用户登陆成功后,将密码明文用sha-1加密存储。######

    两次加密吧,更安全。

    md5是不可逆加密,只有获得原始密码,才能改为sha1

    ######md5是单向hash,sha1是更强的单向hash,当然可以。本来认证用户的秘密就和明文无关的。######md5和sha-1不是加密算法,他们是信息摘要,单向的生成一段摘要码,只能通过碰撞算法之类的去猜,无法解密。
    2020-06-06 14:26:50
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载