登录注册的加密
加密算法
private static final byte[] DES_KEY = { 21, 1, -110, 82, -32, -85, -128, -65 }; @SuppressWarnings("restriction") public static String encryptBasedDes(String data) { String encryptedData = null; try { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(DES_KEY); // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(deskey); // 加密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key, sr); // 加密,并把字节数组编码成字符串 encryptedData = new sun.misc.BASE64Encoder().encode(cipher.doFinal(data.getBytes())); } catch (Exception e) { // log.error("加密错误,错误信息:", e); throw new RuntimeException("加密错误,错误信息:", e); } return encryptedData; } @SuppressWarnings("restriction") public static String decryptBasedDes(String cryptData) { String decryptedData = null; try { // DES算法要求有一个可信任的随机数源 SecureRandom sr = new SecureRandom(); DESKeySpec deskey = new DESKeySpec(DES_KEY); // 创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象 SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(deskey); // 解密对象 Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key, sr); // 把字符串进行解码,解码为为字节数组,并解密 decryptedData = new String(cipher.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(cryptData))); } catch (Exception e) { throw new RuntimeException("解密错误,错误信息:", e); } return decryptedData;
注册功能:
//注册功能 @RequestMapping(value = "/register") public ModelAndView register(Management management) { ModelAndView mv = new ModelAndView(); Management management1 =managementRepository.findByManagementPhone(management.getManagementPhone()); List<Management> management2 = managementRepository.findAll(); int lastpage=management2.size()/8; if (management1==null){ management.setManagementPass(encryptBasedDes(management.getManagementPass())); managementRepository.save(management); } else { management.setManagementID(management1.getManagementID()); management.setManagementPass(encryptBasedDes(management.getManagementPass())); managementRepository.save(management); } return new ModelAndView("redirect:/management/show?page="+lastpage); }
登录功能:
@RequestMapping(value = "/loginManagement") public ModelAndView login(Management management, HttpSession sessoin) { ModelAndView mv = new ModelAndView(); //判断所输入账号密码是否匹配 //如果匹配成功 management.setManagementPass(encryptBasedDes(management.getManagementPass())); if (managementService.verifyManagement(management)) { //通过名字和密码找到该Management,并存进session Management management1=managementRepository.findByManagementPhoneAndAndManagementPass(management.getManagementPhone(), management.getManagementPass()).get(0); sessoin.setAttribute("management", management1); //从session获取该Management判定权限 Management test=(Management)sessoin.getAttribute("management"); switch (management1.getManagementRole()){ case "1": mv.setViewName("");break; case "2": case "3": mv.setViewName("");break; } mv.setViewName("/success.btl"); return mv; } //如果匹配不成功 else { mv.setViewName("/login.btl"); return mv; }
效果: