用户登录

两次MD5加密

1.用户端:PASS=MD5(明文+固定Salt)

2.服务端:PASS=MD5(用户输入+随机Salt)

package com.imooc.miaosha.util;

import org.apache.commons.codec.digest.DigestUtils;

public class MD5Util {
    public static String md5(String src){
        return DigestUtils.md5Hex(src);

    }

    private static final String salt="1a2b3c4d";

    public static String inputPassToFormPass(String inputPass){
        String str= ""+salt.charAt(0)+salt.charAt(2)+inputPass+salt.charAt(5)+salt.charAt(4);
        return md5(str);
    }


    public static String formPassToDBPass(String formPass,String salt){
        String str= ""+salt.charAt(0)+salt.charAt(2)+formPass+salt.charAt(5)+salt.charAt(4);
        return md5(str);
    }
    public static String inputPassToDbPass(String input,String saltDB){
        String formPass= inputPassToFormPass(input);
        String dbpass=formPassToDBPass(formPass,saltDB);
        return dbpass;
    }


    public static void main(String[] args){
        System.out.println(inputPassToFormPass("123456"));//12123456c3//      System.out.println(formPassToDBPass(inputPassToFormPass("123456"),"1a2b3c4d"));
//      System.out.println(inputPassToDbPass("123456","1a2b3c4d"));
    }

}

用什么要做两次MD5加密?

第一次MD5,用户登录时输入明文密码,在网络上进行传输,如果不做任何处理,数据包被截取,就会得到明文密码。

第二次MD5,防止数据库被盗后得到密码。

首先对用户输入的明文密码做一次MD5,再把MD5之后的密码传递给服务端,服务端接收到经过一次MD5后的密码后并不是直接写入到数据库里,而是生成一个随机的Salt,和用户输入的密码进行拼装,再做一次MD5,然后把MD5和Salt同时写到数据库中。

 

 

 

posted @ 2020-05-25 11:59  llby  阅读(317)  评论(0)    收藏  举报