赞
踩
业务场景:后端项目中分为PC端和移动端接口,移动端为例如 mobile 开头的URl,需求为调用移动端接口时,对返回数据进行加密,PC端不加密
-
- import cn.hutool.core.date.DatePattern;
- import cn.hutool.json.JSONConfig;
- import cn.hutool.json.JSONObject;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import lombok.extern.slf4j.Slf4j;
- import org.springframework.core.MethodParameter;
- import org.springframework.http.MediaType;
- import org.springframework.http.server.ServerHttpRequest;
- import org.springframework.http.server.ServerHttpResponse;
- import org.springframework.web.bind.annotation.ControllerAdvice;
- import org.springframework.web.context.request.RequestAttributes;
- import org.springframework.web.context.request.RequestContextHolder;
- import org.springframework.web.context.request.ServletRequestAttributes;
- import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
-
- import javax.servlet.http.HttpServletRequest;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
-
- @Slf4j
- @ControllerAdvice
- public class ResultEncipher implements ResponseBodyAdvice {
-
- @Override
- public boolean supports(MethodParameter methodParameter, Class aClass) {
- return true;
- }
-
- @Override
- public Object beforeBodyWrite(Object body, MethodParameter methodParameter, MediaType mediaType, Class aClass, ServerHttpRequest serverHttpRequest, ServerHttpResponse serverHttpResponse) {
-
- RequestAttributes ra = RequestContextHolder.getRequestAttributes();
- ServletRequestAttributes sra = (ServletRequestAttributes) ra;
- HttpServletRequest httpServletRequest = sra.getRequest();
- String url = httpServletRequest.getRequestURL().toString();
- log.info("------------------------------------------------------");
- log.info(url);
- log.info("------------------------------------------------------");
- JSONConfig jsonConfig = new JSONConfig();
- jsonConfig.setDateFormat(DatePattern.NORM_DATETIME_PATTERN);
- JSONObject jsonObject = new JSONObject(body, jsonConfig);
- String request = jsonObject.toString();
- List<String> requestList = new ArrayList<>();
- try {
- if (url.contains("phones")) {
- log.info("phones URL 开始加密");
- ObjectMapper objectMapper = new ObjectMapper();
- String result = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(body);
- log.info(result);
-
- String point = "xxx";
- //生成公钥和私钥
- Map<String, String> keyMap = new HashMap<>();//genKeyPair();
- keyMap.put("publicKey", "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOUDwJVY1JMY4oSHM1+VKeYZ5T2LjQ4wvENnt0TlRoOYDrUen4Nm3GbVKiGTot76gu7xYL1X9PQvDnYLpUVu0mA2oLrXWZj2ByTW83Ehdc5Y9aLXtNzmm4e6PXtuEtXk2sqUZz+XtBBAUMAne4J9G9DAZVPLFxUUJyzVb9cnK6NQIDAQAB");
- keyMap.put("privateKey", "MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAM5QPAlVjUkxjihIczX5Up5hnlPYuNDjC8Q2e3ROVGg5gOtR6fg2bcZtUqIZOi3vqC7vFgvVf09C8OdgulRW7SYDagutdZmPYHJNbzcSF1zlj1ote03Oabh7o9e24S1eTaypRnP5e0EEBQwCd7gn0b0MBlU8sXFRQnLNVv1ycro1AgMBAAECgYAKkJlCcRsXEG6TKYKc1POiIKWW7ZYpPDcyCQgxYIF6BNfRNRSiHUdpzddZbalJCOi33o5mdLxcNrVXY+CmyPzDyeyNWWX8UcL2Wud8vRlWU7kQ+YcCVyS/nqRLBpHb0QgW7bqzb7fRpnmqhfj+A9hzRaoKxsZ8EWQfvN5UcdmQgQJBAPyTXzHcicK6gsgaXVo8awXsKxT6/bVAq7+FO/F4ckflS3oyABFNnqVRTC3nuQsU6nq3fu1kDwa03NcAa5zZaykCQQDRHEw4N0pnGKdecKTjBlD95B9WI0KCMWHpSOTIZJUIEvKXANX5BFaGHY01BNxDmwVcuecHgG2XH/WyIzVeJEQtAkEA8WM/NX4aQvrRhsB7u4PGnPBq9DA0TQeznOSOt2ZvgfrIOc6TdfYCyuh5r92oYcjpl8LLEcHxAm3UKb8DGfJIkQJAAjyYQB2vSQ0FdUglK1x870pKX4R/CJ94maMy90XEJlL1j1Ht9/zo5ARa509G/94fn49JflYMVgp8eUxRHNGsfQJBAKm39ZUaFyuDSpRINHZNHfldasmy9hLyXdTb3sLFj/bPaq0MyORAZPqq6XCu+nnIhVKVyADbXb+8T5kn70lzIbg=");
- String publicKey = keyMap.get("publicKey");
- String privateKey = keyMap.get("privateKey");
- System.out.println(publicKey);
- System.out.println(privateKey);
- log.info("后端返回参数:" + request);
- requestList = RSAEncrypt.publicKeyEncryptBigStr(request, publicKey, point);
- } else {
- return body;
- }
- } catch (Exception e) {
- e.printStackTrace();
- log.error("对方法method :【" + methodParameter.getMethod().getName() + "】返回数据进行解密出现异常:" + e.getMessage());
- return requestList;
- }
- return requestList;
- }
- }

加密相关在以下博文,复制即可使用
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。