【MD5】采用MD5+盐的加密方式完成注册用户和登录账号
MD5的pom
<!-- 专门做MD5的加密包--><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency>
需求分析
- 注册用户时,注册的密码在数据库中进行加密
- 登入用户时,采用MD5验证后密码正确登录用户
需求解决
- 数据库建表时,在user表中设置一个slat列,每一次注册用户时,生成一个独一无二的slat(盐)写入数据库slat列,并使用md5+slat的方式进行密码加密,写入数据库password列。
- 登录用户时,先根据userid获得slat,输入密码和md5+slat加密之后得到的password和数据库password对比,相同,则登入成功。
注册用户代码
1.生成slat的工具类(自己随便写的,保证生成的数字不一样就行)
public class SlatUtile {public static Integer createSlat(){int i = new Random().nextInt();return i;}
}
2.注册用户mapper
@Repository
public interface AddUserMapper {@Insert("insert into user(userid,username,phonenumber,password,slat)value(#{userid},#{username},#{phonenumber},#{password},#{slat})")Integer addUser(Integer userid, String username,String phonenumber,String password,Integer slat);
}
3.注册用户service
//service接口
public interface AddUserService {Integer addUser(Integer userid, String username,String phonenumber,String password,Integer slat);
}
@Service
public class AddUserServiceImp implements AddUserService {@Autowiredprivate AddUserMapper addUserMapper;//注册新用户,密码进行采用MD5+盐加密@Overridepublic Integer addUser(Integer userid,String username,String phonenumber,String password,Integer slat) {Integer slatforthis = SlatUtile.createSlat(); //每次用户注册新生成一个saltString md5password = DigestUtils.md5Hex(password+slatforthis); //对密码进行加密Integer integer = addUserMapper.addUser(userid, username, phonenumber, md5password,slatforthis);return integer;}
}
4.注册用户controller
@RestController
public class AddUserController {@Autowiredprivate AddUserService addUserService;@RequestMapping("adduser")public String adduser(Integer userid, String username, String phonenumber, String password,Integer slat) {Integer integer = addUserService.addUser(userid, username, phonenumber, password,slat);if (integer == 1){return "新建用户完成";}else {return "新建用户失败";}}
}
5.测试
注册密码为111
数据库密码完成加密,如图所示
登录用户代码
首先需要个根据userid查找user的查找代码,这里我就不写了(为了获取slat)
1.登入用户mapper
@Repository
public interface LoginMapper {@Select("select * from user where userid = #{userid} and password = #{password}")UserVO login(Integer userid,String password);
}
2.登入用户service
//接口层
public interface Md5LoginService {UserVO login(Integer userid, String password);
}
@Service
public class Md5LoginServiceImp implements Md5LoginService {@Autowiredprivate LoginMapper loginMapper;@Autowiredprivate FindUserbyIdMapper findUserbyIdMapper;@Overridepublic UserVO login(Integer userid, String password) {UserVO user = findUserbyIdMapper.findUserById(userid); //根据userid查找userString salt = user.getSlat(); //获得当前用户的saltString md5password = DigestUtils.md5Hex(password + salt); //获得加密密码UserVO userVO = loginMapper.login(userid, md5password);return userVO;}
}
主要逻辑是如果输入的未加密密码和slat正确,加密后得到的字段和数据库的password字段是相同的
3.登入用户controller
@RestController
public class Md5LoginController {@Autowiredprivate Md5LoginService md5LoginService;@RequestMapping("md5login")public UserVO md5login (Integer userid,String password){UserVO userVO = md5LoginService.login(userid, password);return userVO;}
}
4.验证
登入成功(密码111)
登入失败,未作处理
【MD5】采用MD5+盐的加密方式完成注册用户和登录账号相关推荐
- MD5、AES、Jasypt加密方式的简要介绍与对比
MD5.AES.Jasypt加密方式的简要介绍与对比 1 前言 目前做的项目中用的加密工具有:MD5.AES加密工具(旧的)及Jasypt加密工具(新增),对这三种加密工具的简要原理和应用做了整理.内 ...
- Shiro(三) 身份认证源码分析与 MD5 盐值加密
文章目录 1. 身份认证 2. 身份验证的基本流程 3. 身份验证实现 3.1 在 `login.jsp` 添加登录表单 3.2 添加表单提交的 Controller 3.3 完善 Realm 的身份 ...
- java shiro盐值加密_java中spring-shiro实现密码的MD5盐值加密
看了网上很多教程,都提到有配置spring shiro的密码加密方式,甚至给出了自定义的Class来实现.却很少有通过配置来解决的. 密码的盐值加密方式应该是非常通用的,也可以算是基础吧.按理说spr ...
- MD5算法原理简要介绍并采用C#应用在桌面应用系统的用户登录与注册中
MD5算法原理简要介绍并采用C#应用在桌面应用系统的用户登录与注册中 接上文,本文简要介绍一下MD5加密算法的原理,并采用C#实现MD5算法的加密与解密过程,将这一实现过程应用在我自己开发的桌面办公应 ...
- 【DotNet加密方式解析】-- 好文收藏
索引: 目录索引 By -- 彭泽 一. DotNet加密方式解析--散列加密 笔记: 散列加密种类: 1.MD5 128位 2.SHA-1 160位 3.SHA-256 256位 4.SHA- ...
- 0宽字符加密_前端AES加密方式分析,及其python实现
在前端常见的加密方式中AES很少使用,因为相对于非对称的RSA安全性很低,AES是典型的对称加密,密钥就在前端源码里. 案列网站是http://ewt360.com,一个并不复杂的网站,首先抓个包看看 ...
- 淘宝密码加密方式分析,及python实现
上回说到<分析淘宝登陆对selenium爬虫的封杀方案,反爬虫机制的升级>.<淘宝封杀selenium的ua算法分析>,对淘宝封杀Selenium的思路有了一个清晰认识,核心就 ...
- 基于java注册登录MD5算法加盐加密颁发 Token身份令牌使用各种邮箱发送验证码详解雪花算法
目的作用 == 在项目中,为了防止别人窥视我们的密码通常我们会采取一些加密方式.这里简单介绍一下MD5 加盐加密方法,MD5叫做信息-摘要算法,严格来说不是加密方式,而是信息摘要. 对于可以接触到数据 ...
- shiro—MD5盐值加密
本例为在idea下shiro集成springMVC.仅有一个认证加密方式(一个realm ) 为什么是MD5盐值加密呢?shiro用密码匹配,密码一样,就ok.如果两个用户的密码一样,则就会造成麻烦. ...
最新文章
- java读取项目资源文件的方法
- 视音频数据处理入门:PCM音频采样数据处理
- 江苏单招试题计算机原理及答案,江苏省对口单招计算机组装与维修计算机原理考题分类汇总.docx...
- docker启动停止操作命令
- 一种基于红黑树的定时器
- 22年前,100万买入谷歌原始股,奥尼尔的股份如今市值多少?
- 如何保护 IT 基础设施的安全?谷歌给出了500页的答案
- 从技术转管理,我做了什么来拯救自己?
- kali foremost 分离文件_只需 1 分钟,这个网站用 AI 分离歌曲的人声、伴奏和乐器声...
- Springboot+Mybatis查询三级类目demo
- foxmail的邮局和端口_Foxmail如何进行POP、SMTP设置(pop)
- IT人的第一份简历(Word版 、Markdown版、PDF版,静动态网页版)
- 低通滤波与RC振荡产生正弦波
- 862772-11-0,c(RGDfC),cyclo(RGDfC),cyclo(RGD-DPhe-C),cyclo (Arg-Gly-Asp-D-Phe-Cys)
- 【第23期】令人舒心又伤脑的12张数学原理动图!你能看懂几个
- IE 下 SELECT 小箭头乱码
- 【自学Python】Python类型转换
- html隐藏超链接下划线
- android mp4v2,MP4v2视频库漏洞分析
- 解决git拉取代码时报:Auto packing the repository in background for optimum performance