加密技术Md5Crypt需要在pom文件中导入包:

commons-codec

commons-codec

1.10

一、第一种实现方法

1)、新增用户时,对新增后的用户密码进行加密

在userService.class中实现如下:

public int adduser(User user) {

user.setUserid(UUID.randomUUID().toString());

user.setPassword(Md5Crypt.md5Crypt(user.getPassword().getBytes()));

return userMapper.insert(user);

}

以上方法同样适用于修改用户密码时。

2)、使用新增的用户登录系统时,需要校验用户输入的密码与后台存储的密码是否一致

在loginService.class中实现如下:

public String checkUser(HttpServletRequest request, User user) {

UserCriteria example = new UserCriteria();

String password = user.getPassword();

example.createCriteria().andUsernameEqualTo(user.getUsername());

List objs = userMapper.selectByExample(example);

if(objs.size()>0){

User user1 = objs.get(0);

//获取后台的用户密码

String md5Pass = MD5CryptUtil.getSalts(user1.getPassword());

//将用户输入的密码加密

String pass = Md5Crypt.md5Crypt(password.getBytes(),md5Pass);

//判断用户输入的密码与后台密码是否一致

if(!pass.equals(user1.getPassword())){

request.setAttribute("error", "密码错误!");

return "index";

}

return "main";

}

}else{

request.setAttribute("error", "用户不存在!");

return "index";

}

}

其中加密工具类实现如下:

import org.apache.commons.codec.digest.DigestUtils;

import org.apache.commons.codec.digest.Md5Crypt;

public class MD5CryptUtil

{

public static void main(String[] args) {

String tt1 = Md5Crypt.md5Crypt("333".getBytes());

System.out.println("~~~"+tt1);//$1$lYz58EdG$kfqNTaHTCdLaHCm/7fzXA1

String mysalt = getSalts(tt1);

System.out.println("~~~"+mysalt);//$1$lYz58EdG$

System.out.println("~~~"+Md5Crypt.md5Crypt("333".getBytes(), mysalt));//$1$lYz58EdG$kfqNTaHTCdLaHCm/7fzXA1

}

public static String getSalts(String password) {

String[] salts = password.split("\\$");

if (salts.length < 1) {

return "";

}

String mysalt = "";

for (int i = 1; i < 3; i++) {

mysalt += "$" + salts[i];

}

mysalt += "$";

return mysalt;

}

}

可以看到,登录时校验密码是否正确,先是取出后台该用户存储的密码,然后截取后台存储密码的$...$这部分。再把Md5Crypt.md5Crypt(用户登录时输入的密码.getBytes(), 截取的后台电部分加密的密码)进行加密,最后比该结果与后台存储的加密密码是否一致,即可校验密码的正确性。

二、md5加密密码还有一种方法,但是感觉不太安全。

以下是用户新增时,将用户密码和userid组合起来进行md5加密。

用户登录时,取登录时输入的密码与后台该用户对应的userid合起来进行md5加密。

最后比较两者是否一致。

1)、在userservice中实现

public int adduser(User user) {

user.setUserid(UUID.randomUUID().toString());

user.setPassword(DigestUtils.md5Hex(user.getPassword()+user.getUserid()));

return userMapper.insert(user);

}

2)、在loginservice类中校验

public String checkUser(HttpServletRequest request, User user) {

UserCriteria example = new UserCriteria();

String password = user.getPassword();

example.createCriteria().andUsernameEqualTo(user.getUsername());

List objs = userMapper.selectByExample(example);

if(objs.size()>0){

User user1 = objs.get(0);

String pass = DigestUtils.md5Hex(password +user1.getUserid());

//判断用户输入的密码与后台密码是否一致

if(!pass.equals(user1.getPassword())){

request.setAttribute("error", "密码错误!");

return "index";

}else{

request.getSession().setAttribute("user",user1);

return "main";

}

}else{

request.setAttribute("error", "用户不存在!");

return "index";

}

}

ss修改服务器加密方式,SSM框架新增/修改用户、用户登录时密码加密处理及校验...相关推荐

  1. Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证

    一:先从登录开始,直接看代码 @RequestMapping(value="dologin",method = {RequestMethod.GET, RequestMethod. ...

  2. 反编译后怎么修改服务器地址,反编译后怎么修改服务器地址

    反编译后怎么修改服务器地址 内容精选 换一换 业务接入DDoS高防后,经过高防转发的流量到服务端之后真实源IP将被隐藏,在业务应用开发中,通常需要获取客户端真实的IP地址.例如,投票系统为了防止刷票, ...

  3. 久其修改服务器地址什么意思,久其修改服务器地址什么意思

    久其修改服务器地址什么意思 内容精选 换一换 请求URI由如下部分组成.{URI-scheme}://{Endpoint}/{resource-path}?{query-string}例如您需要获取华 ...

  4. 修改服务器的ip地址的命令,修改服务器ip地址命令行

    修改服务器ip地址命令行 内容精选 换一换 Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器进行连接,连接示例图如图1所示.Atlas 200 DK连接Ubuntu服务器 ...

  5. 如何修改服务器上的端口号,如何修改远程服务器端口号

    如何修改远程服务器端口号 内容精选 换一换 迁移前,若选择迁移到已有服务器,请做以下准备工作:需配置目的端服务器所在VPC安全组,如果是Windows系统需要开放TCP的8899端口.8900端口和2 ...

  6. 修改服务器的AJP监听地址,修改服务器的AJP监听地址

    修改服务器的AJP监听地址 内容精选 换一换 如果IP经过NAT/WAF,则只能获取到NAT/WAF转化后的IP地址,无法获取到NAT/WAF前的IP地址.如果客户端为容器,只能获取到容器所在主机的I ...

  7. 宽带连接怎么修改服务器名称地址,宽带连接怎么修改服务器名称地址

    宽带连接怎么修改服务器名称地址 内容精选 换一换 在弹性云服务器上安装完成后输入公网IP,无法连接目的虚拟机,端口无法访问工具.源端网络未连通目的端.目的端安全组未开放8084端口.目的端网络ACL禁 ...

  8. 使用charles修改服务器返回数据,Charles使用part4——修改网络请求

    Charles提供了Map功能.Rewrite功能.Breakpoints功能,都可以达到修改服务器返回内容的目的,这三者的差异是: Map功能适合长期的将某些请求重定向到另一个网络地址或本地文件 M ...

  9. dota修改服务器,forOMG非英雄篇 如何修改数据以便于测试

    本系列依次为<英雄篇>.<非英雄篇>.<技能篇>.<物品篇>. 可以被修改的数据可以被分为两类:很容易修改的(英雄.非英雄.技能)和比较复杂的(物品). ...

最新文章

  1. 苏宁Nodejs性能优化实战
  2. [Spark][Python]PageRank 程序
  3. 蜜罐中利用jsonp跨域漏洞和xss漏洞的分析
  4. hibernate教程--抓取策略
  5. .NET 6 攻略大全(二)
  6. postgresql+postgis安装
  7. 【转】04.Dicom 学习笔记-DICOM C-Move 消息服务
  8. sql行转列 列数据不定 sql交叉报表实例
  9. c与python内存传递_如何将C中的内存地址转换为python ctypes调用?
  10. 如何判断机器学习数据集是否是线性的?
  11. 安装WIN8提示Error Code:0x0000005D的解决办法
  12. 获取小游戏SWF文件中的素材
  13. I 滑稽树上滑稽果(莫队+组合数)
  14. 教学中计算机软件的应用,计算机软件应用类课程教学方法
  15. jQuery siblings() 方法
  16. javascript如何获取request中的数据
  17. etsy开店流程遇到的问题整理
  18. 虚拟服务器黑屏怎么办,解决VMware 虚拟机开机黑屏的问题
  19. java 辗转相除_Java实现辗转相除法并求取最大公约数、最小公倍数
  20. 微信怎样查绑定的服务器地址,你的微信绑定了哪些网站和应用?这个方法可以一键查看......

热门文章

  1. javaweb新闻管理系统03
  2. 信息系统项目管理师----进度管理论文(飘过)
  3. Ganglia源码安装
  4. img中src引入svg,修改svg颜色
  5. 鸿蒙应用权限管理和访问控制
  6. 解决USB连接时,出现usb 1-1: device descriptor read/64的解决方法
  7. springboot报错:class path resource cannot be opened because it does not exits
  8. 东北大学计算机科学与工程学院联系电话,王大玲 - 东北大学 - 计算机科学与工程学院...
  9. FPGA学习笔记(3)
  10. 什么是node-gyp?