栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot登录设计---对密码进行两次Md5加密

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot登录设计---对密码进行两次Md5加密

第一次加密:
前端使用md5加密,将加密后的密码传给后端。
是为了防止在客户端向服务端传送用户信息时,密码被人截获,所以需要进行一次加密。

        var inputPass = $("#password").val();
        var salt = g_passsword_salt;
        var str = "" + salt.charAt(0) + salt.charAt(2) + inputPass + salt.charAt(5) + salt.charAt(4);
        var password = md5(str);


		//salt
		var g_passsword_salt="9d5b364d"

第二次加密:
后端收到前端加密后的密码后,在存入数据库时再进行一次加密。

(1)需要导入的依赖:

		
		
			commons-codec
			commons-codec
			1.3
		
		
			org.apache.commons
			commons-lang3
			3.8.1
		

(2)设置md5配置类:

@Component
public class MD5Util {
    public static String md5(String src){
        return DigestUtils.md5Hex(src);
    }
    private static final String salt="9d5b364d";
    public static String inputPassToFromPass(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 inputPass,String salt){
        String formPass = inputPassToFromPass(inputPass);
        String dbPass=formPassToDBPass(formPass,salt);
        return dbPass;
    }
//    后两个的输出密码应该是相同的
    public static void main(String[] args){
//        模拟第一次加密生成的密码(即前端加密生成的密码)
        System.out.println(inputPassToFromPass("123456"));
//        模拟第二次加密生成的密码
        System.out.println(formPassToDBPass("3457ceaeba3426466887369f1a1f7a88","9d5b364d"));
//        用户输入的密码--->存入数据库的密码的转换
        System.out.println(inputPassToDBPass("123456","9d5b364d"));
    }
}

(3)对传入参数进行校验:

需要导入的依赖:

		
		
			org.springframework.boot
			spring-boot-starter-validation
		

MD5加密后通常是32位编码

    @NotNull(message = "密码不能为空")
    @Length(min = 32)
    private String password;

(4)登录时在service层验证密码是否正确:

//		传入参数 loginVo
		String password=loginVo.getPassword();
//        根据手机号验证用户是否存在
        User user = userMapper.selectByPhone(mobile);
        if(user==null){
            throw new GlobalException(ResponseBeanEnum.LOGIN_ERROR);
        }
//        验证密码是否正确 不正确则抛出异常
        if(!MD5Util.formPassToDBPass(password,user.getSalt()).equals(user.getPassword())){
            throw new GlobalException(ResponseBeanEnum.LOGIN_ERROR);
        }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000242.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号