Java高性能高并发实战之登录功能设计(二)

前言

翻看了之前买的课程,今天又重温了一遍之前的代码,每次查看也总是能发现自己不足的地方,这里也开始做一个记录。也算是开始对项目复习。
系列文章如下:

章节名称 博客地址
安装部署Redis 集成Redis(已完结)
页面登陆功能设计 登录功能设计(更新优化中)
秒杀页面具体设计 秒杀详情页(已完结)
JMeter初级压测学习 Jmeter压测入门学习(已完结)
页面优化设计 页面优化设计(已完结)
接口优化 RabbbitMq接口优化(已完结)
图形验证码等 图形验证码及接口防刷(更新优化中)

两次MD5加密设置。

之前学习过就是以用户登录时候设置是以用户名作为盐值来实现MD5加密服务,现在使用固定的盐值(当然这个盐值还是在数据库中进行读取)下面可以看一下数据库的设计:
在这里插入图片描述
这里我们指定一个盐值,在进行加密时候加入到其中。这里我们进行的两次MD5操作一方面是保证对于数据在网络上传输时候,我们输入的密码传输到服务端时候在向底层传输时候进行一级的加密操作。这个时候在服务端操作的密码也不是明文。第二个方面是在防止别人对我们的数据库盗取时候,不会因为一级加密就简单进行反解密拿到我们的数据库密码,在服务端中存到底层的密码是二度加密过。

前端设计

在拿到用户输入的密码以后我们先进行一个初级加密,这个加密的流程和盐值都是和后端相同的。
在这里插入图片描述
前端这样设计,保证拿到后端的密码是进行过一级加密的。
在这里插入图片描述
这里介绍一下自己定义的工具类。


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);
		System.out.println(str);
		// 一级加密
		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 saltDB) {
   
		String formPass = inputPassToFormPass(inputPass);
		String dbPass = formPassToDBPass(formPass, saltDB);
		// 结合起来的一次完整加密。
		return dbPass;
	}
	
}

这样,在密码传到后台时候是已经进行过一级的加密操作。然后再进行自定义工具类的二级加密,判断和从数据库中根据用户名取出的密码是否相同来进行下一步操作。打印出

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 38
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值