Java秒杀登录模块

两次MD5加密

客户端 code = MD5(salt + password)

数据库db 存MD5(salt + code)

两次md5加密设计如下
Java秒杀登录模块
加密:出于安全考虑
第一次 (在前端加密,客户端):密码加密是(明文密码+固定盐值)生成md5用于传输,目的,由于http是明文传输,当输入密码若直接发送服务端验证,此时被截取将直接获取到明文密码,获取用户信息。
第二次:在服务端再次加密,当获取到前端发送来的密码后。通过MD5(密码+随机盐值)再次生成密码后存入数据库。
防止数据库被盗的情况下,通过md5反查,查获用户密码。方法是盐值会在用户登陆的时候随机生成,并存在数据库中,这个时候就会获取到。

## 第二次的目的:

黑客若是同时黑掉数据库,通过解析前端js文件,知道如果md5加密的过程,就知道此时用户的密码。
但是此时我们要是在后端加入随机盐值和传输密码的md5组合,黑客是无法知道通过后端密码加密过程的,从而无法知道密码。

md5是不可逆的,不能反向解密的,网上所谓的“解密”都是把“加密”结果存储到数据库再比对的只能暴力**,即有一个字典,从字典中读取一条记录,将密码用加salt盐值做MD5来对比数据库里面的值是否相等。

***MD5两次加密的坑参考:***https://www.cnblogs.com/jhli/p/6737482.html

登录功能实现下

service层调用luserService…login() : userMobile作为id 调用server层getbyid找到对应的user

相关数据库表设计

Java秒杀登录模块

对象创建User的domain类

Java秒杀登录模块
Java秒杀登录模块

新建MiaoshaUserDao:

Java秒杀登录模块

新建MiaoshaUserService:

Java秒杀登录模块