登录注册功能使用md5对密码进行加密

  之前一直搞不清楚md5加密,从网上查了好多资料、看了几个视频都没实现成功。这一次参加学校的集中实习,培训老师带我们简单实现了一下。

    要简单实现并不难,先从网上down一个简单的md5算法:

 
  1.  
    package com.train.util;
    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
     
    public class MD5Utils {
    	/**
    	 * 使用md5的算法进行加密
    	 */
    	public static String md5(String plainText) {
    		byte[] secretBytes = null;
    		try {
    			secretBytes = MessageDigest.getInstance("md5").digest(
    					plainText.getBytes());
    		} catch (NoSuchAlgorithmException e) {
    			throw new RuntimeException("没有md5这个算法!");
    		}
    		String md5code = new BigInteger(1, secretBytes).toString(16);// // 16进制数字
    		// 如果生成数字未满32位,需要前面补0
    		for (int i = 0; i < 32 - md5code.length(); i++) {
    			md5code = "0" + md5code;
    		}
    		return md5code;
    	}
    }
    

    然后在 Servlet或者控制器里直接调用MD5的这个静态方法就可以了:

  2. protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    		request.setCharacterEncoding("utf-8");
    		String userName = request.getParameter("userName");
    		String passWord = MD5Utils.md5(request.getParameter("passWord"));
    		userModel model = new userModel();
    		model.setUserName(userName);
    		model.setPassWord(passWord);
    		userService service = new userService();
    		try {
    			userModel m = service.selectByName(model.getUserName());
    			if (m == null) { // 如果找不到同名的记录,则可以注册
    				int i = service.save(model);
    				if (i > 0) {
    					request.setAttribute("msg", "注册成功!请登录!");
    					request.getRequestDispatcher("login.jsp").forward(request, response);
    				} else {
    					request.setAttribute("msg", "注册失败!请重新注册!");
    					request.getRequestDispatcher("index.jsp").forward(request, response);
    				}
    			} else {
    				request.setAttribute("msg", "用户名重复!请重新注册!");
    				request.getRequestDispatcher("index.jsp").forward(request, response);
    			}
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    	}
    

    这样注册进去的就是经过md5加密后的密文了。

    然后登录功能要比对密码的时候,从数据库中取出的是密文,需要将用户输入的密码再进行md5加密以后再比对,否则就会失败:

    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
     
    		request.setCharacterEncoding("utf-8");
    		String userName = request.getParameter("userName");
    		String passWord = MD5Utils.md5(request.getParameter("passWord"));
    		userModel model = new userModel();
    		model.setUserName(userName);
    		model.setPassWord(passWord);
     
    		userService service = new userService();
     
    		if (request.getSession().getAttribute("checkcode_session").equals(request.getParameter("checkCode"))) {
     
    			try {
    				userModel md = service.selectByNameAndPass(model);
    				if (md != null) {
    					// 找到记录,登录成功
    					request.getSession().setAttribute("userName", md.getUserName());
    					request.getRequestDispatcher("welcome.jsp").forward(request, response);
    				} else {
    					request.setAttribute("msg", "登录失败!请重试!");
    					request.getRequestDispatcher("login.jsp").forward(request, response);
    				}
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		} else {
    			request.setAttribute("msg", "验证码输入有误!请重试!");
    			request.getRequestDispatcher("login.jsp").forward(request, response);
    		}
     
    	}
    

     

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金州饿霸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值