public static void main(String[] args) { System.out.println(encryptPassword("e10adc3949ba59abbe56e057f20f883e")); } }
/** * 对称加密 * @param source * @return * @throws Exception */ public static String desEncrypt(String source) throws Exception { if (source == null || source.length() == 0){ return null; } Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(strParam.getBytes("UTF-8")); cipher.init(Cipher.ENCRYPT_MODE, secretKey, iv); return byte2hex( cipher.doFinal(source.getBytes("UTF-8"))).toUpperCase(); }
/** * 对称解密 * @param source * @return * @throws Exception */ public static String desDecrypt(String source) throws Exception { if (source == null || source.length() == 0){ return null; } byte[] src = hex2byte(source.getBytes()); Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding"); DESKeySpec desKeySpec = new DESKeySpec(strKey.getBytes("UTF-8")); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey secretKey = keyFactory.generateSecret(desKeySpec); IvParameterSpec iv = new IvParameterSpec(strParam.getBytes("UTF-8")); cipher.init(Cipher.DECRYPT_MODE, secretKey, iv); byte[] retByte = cipher.doFinal(src); return new String(retByte); }
@Override @Transactional(rollbackFor = Exception.class) public EmailConfig update(EmailConfig emailConfig, EmailConfig old) { try { if(!emailConfig.getPass().equals(old.getPass())){ // 对称加密 emailConfig.setPass(EncryptUtils.desEncrypt(emailConfig.getPass())); } } catch (Exception e) { e.printStackTrace(); } emailRepository.saveAndFlush(emailConfig); return emailConfig; }
try { account.setPass(EncryptUtils.desDecrypt(emailConfig.getPass())); } catch (Exception e) { throw new BadRequestException(e.getMessage());
/** * 验证密码 * @param pass * @return */ @GetMapping(value = "/users/validPass/{pass}") public ResponseEntity validPass(@PathVariable String pass){ UserDetails userDetails = SecurityContextHolder.getUserDetails(); JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); Map map = new HashMap(); map.put("status",200); if(!jwtUser.getPassword().equals(EncryptUtils.encryptPassword(pass))){ map.put("status",400); } return new ResponseEntity(map,HttpStatus.OK); }
/** * 修改密码 * @param pass * @return */ @GetMapping(value = "/users/updatePass/{pass}") public ResponseEntity updatePass(@PathVariable String pass){ UserDetails userDetails = SecurityContextHolder.getUserDetails(); JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); if(jwtUser.getPassword().equals(EncryptUtils.encryptPassword(pass))){ throw new BadRequestException("新密码不能与旧密码相同"); } userService.updatePass(jwtUser,EncryptUtils.encryptPassword(pass)); return new ResponseEntity(HttpStatus.OK); }
/** * 修改邮箱 * @param user * @param user * @return */ @PostMapping(value = "/users/updateEmail/{code}") public ResponseEntity updateEmail(@PathVariable String code,@RequestBody User user){ UserDetails userDetails = SecurityContextHolder.getUserDetails(); JwtUser jwtUser = (JwtUser)userDetailsService.loadUserByUsername(userDetails.getUsername()); if(!jwtUser.getPassword().equals(EncryptUtils.encryptPassword(user.getPassword()))){ throw new BadRequestException("密码错误"); } VerificationCode verificationCode = new VerificationCode(code, ElAdminConstant.RESET_MAIL,"email",user.getEmail()); verificationCodeService.validated(verificationCode); userService.updateEmail(jwtUser,user.getEmail()); return new ResponseEntity(HttpStatus.OK); } }
/** * 登录授权 * @param authorizationUser * @return */ @Log("用户登录") @PostMapping(value = "${jwt.auth.path}") public ResponseEntity login(@Validated @RequestBody AuthorizationUser authorizationUser){ final UserDetails userDetails = userDetailsService.loadUserByUsername(authorizationUser.getUsername()); if(!userDetails.getPassword().equals(EncryptUtils.encryptPassword(authorizationUser.getPassword()))){ throw new AccountExpiredException("密码错误"); } if(!userDetails.isEnabled()){ throw new AccountExpiredException("账号已停用,请联系管理员"); } // 生成令牌 final String token = jwtTokenUtil.generateToken(userDetails); // 返回 token return ResponseEntity.ok(new AuthenticationToken(token)); }