MD5的pom

        <!--        专门做MD5的加密包--><dependency><groupId>commons-codec</groupId><artifactId>commons-codec</artifactId></dependency>

需求分析

  1. 注册用户时,注册的密码在数据库中进行加密
  2. 登入用户时,采用MD5验证后密码正确登录用户

需求解决

  1. 数据库建表时,在user表中设置一个slat列,每一次注册用户时,生成一个独一无二的slat(盐)写入数据库slat列,并使用md5+slat的方式进行密码加密,写入数据库password列。
  2. 登录用户时,先根据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+盐的加密方式完成注册用户和登录账号相关推荐

  1. MD5、AES、Jasypt加密方式的简要介绍与对比

    MD5.AES.Jasypt加密方式的简要介绍与对比 1 前言 目前做的项目中用的加密工具有:MD5.AES加密工具(旧的)及Jasypt加密工具(新增),对这三种加密工具的简要原理和应用做了整理.内 ...

  2. Shiro(三) 身份认证源码分析与 MD5 盐值加密

    文章目录 1. 身份认证 2. 身份验证的基本流程 3. 身份验证实现 3.1 在 `login.jsp` 添加登录表单 3.2 添加表单提交的 Controller 3.3 完善 Realm 的身份 ...

  3. java shiro盐值加密_java中spring-shiro实现密码的MD5盐值加密

    看了网上很多教程,都提到有配置spring shiro的密码加密方式,甚至给出了自定义的Class来实现.却很少有通过配置来解决的. 密码的盐值加密方式应该是非常通用的,也可以算是基础吧.按理说spr ...

  4. MD5算法原理简要介绍并采用C#应用在桌面应用系统的用户登录与注册中

    MD5算法原理简要介绍并采用C#应用在桌面应用系统的用户登录与注册中 接上文,本文简要介绍一下MD5加密算法的原理,并采用C#实现MD5算法的加密与解密过程,将这一实现过程应用在我自己开发的桌面办公应 ...

  5. 【DotNet加密方式解析】-- 好文收藏

    索引: 目录索引 By -- 彭泽 一. DotNet加密方式解析--散列加密 笔记: 散列加密种类: 1.MD5  128位 2.SHA-1  160位 3.SHA-256  256位 4.SHA- ...

  6. 0宽字符加密_前端AES加密方式分析,及其python实现

    在前端常见的加密方式中AES很少使用,因为相对于非对称的RSA安全性很低,AES是典型的对称加密,密钥就在前端源码里. 案列网站是http://ewt360.com,一个并不复杂的网站,首先抓个包看看 ...

  7. 淘宝密码加密方式分析,及python实现

    上回说到<分析淘宝登陆对selenium爬虫的封杀方案,反爬虫机制的升级>.<淘宝封杀selenium的ua算法分析>,对淘宝封杀Selenium的思路有了一个清晰认识,核心就 ...

  8. 基于java注册登录MD5算法加盐加密颁发 Token身份令牌使用各种邮箱发送验证码详解雪花算法

    目的作用 == 在项目中,为了防止别人窥视我们的密码通常我们会采取一些加密方式.这里简单介绍一下MD5 加盐加密方法,MD5叫做信息-摘要算法,严格来说不是加密方式,而是信息摘要. 对于可以接触到数据 ...

  9. shiro—MD5盐值加密

    本例为在idea下shiro集成springMVC.仅有一个认证加密方式(一个realm ) 为什么是MD5盐值加密呢?shiro用密码匹配,密码一样,就ok.如果两个用户的密码一样,则就会造成麻烦. ...

最新文章

  1. java读取项目资源文件的方法
  2. 视音频数据处理入门:PCM音频采样数据处理
  3. 江苏单招试题计算机原理及答案,江苏省对口单招计算机组装与维修计算机原理考题分类汇总.docx...
  4. docker启动停止操作命令
  5. 一种基于红黑树的定时器
  6. 22年前,100万买入谷歌原始股,奥尼尔的股份如今市值多少?
  7. 如何保护 IT 基础设施的安全?谷歌给出了500页的答案
  8. 从技术转管理,我做了什么来拯救自己?
  9. kali foremost 分离文件_只需 1 分钟,这个网站用 AI 分离歌曲的人声、伴奏和乐器声...
  10. Springboot+Mybatis查询三级类目demo
  11. foxmail的邮局和端口_Foxmail如何进行POP、SMTP设置(pop)
  12. IT人的第一份简历(Word版 、Markdown版、PDF版,静动态网页版)
  13. 低通滤波与RC振荡产生正弦波
  14. 862772-11-0,c(RGDfC),cyclo(RGDfC),cyclo(RGD-DPhe-C),cyclo (Arg-Gly-Asp-D-Phe-Cys)
  15. 【第23期】令人舒心又伤脑的12张数学原理动图!你能看懂几个
  16. IE 下 SELECT 小箭头乱码
  17. 【自学Python】Python类型转换
  18. html隐藏超链接下划线
  19. android mp4v2,MP4v2视频库漏洞分析
  20. 解决git拉取代码时报:Auto packing the repository in background for optimum performance

热门文章

  1. 【GD32F303】星空派介绍
  2. mysql课设体会500字_MYSQL数据库课程设计 精品
  3. 使用StretchBlt函数进行图像缩放
  4. 4、一次改变风水的经历
  5. 霍夫曼自述:发明霍夫曼编码的过程
  6. Flask框架学习(二)
  7. XGBoost(eXtreme Gradient Boosting)
  8. 设计模式之适配器模式(一)
  9. 论文:Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey翻译工作
  10. 7.19每日股市晚评