From 56d7382588ae040c25d75378a87def0f7024972c Mon Sep 17 00:00:00 2001
From: xiaowuler <xiaowuler@163.com>
Date: Wed, 8 Dec 2021 13:55:53 +0800
Subject: [PATCH] modify some codes

---
 04.系统编码/Backend/pom.xml               |  20 +++
 .../backend/controller/UserController.java    |  27 ++--
 .../GlobalDefaultExceptionHandler.java        |  10 ++
 .../backend/model/dao/User.java               |   9 ++
 .../backend/util/BtoAAtoB.java                | 122 ++++++++++++++++++
 .../userinformation/backend/util/Coder.java   | 121 +++++++++++++++++
 .../src/main/resources/application.yml        |  12 +-
 .../UserInformationApplicationTests.java      |  29 ++---
 04.系统编码/Backend/部署.md             |   3 +
 04.系统编码/Frontend/package-lock.json    |  16 ++-
 04.系统编码/Frontend/package.json         |   2 +
 .../Frontend/src/components/Login.vue         |   7 +-
 .../src/components/SystemManagement.vue       |  10 +-
 .../Frontend/src/postcss.config.ts            |   5 +
 04.系统编码/Frontend/src/tes.babelrc      |   6 +
 04.系统编码/Frontend/src/uilts/Coder.ts   |  25 ++++
 04.系统编码/Frontend/src/uilts/Config.ts  |   3 +-
 04.系统编码/Frontend/src/uilts/axios.ts   |   4 +-
 18 files changed, 391 insertions(+), 40 deletions(-)
 create mode 100644 04.系统编码/Backend/src/main/java/com/userinformation/backend/util/BtoAAtoB.java
 create mode 100644 04.系统编码/Backend/src/main/java/com/userinformation/backend/util/Coder.java
 create mode 100644 04.系统编码/Frontend/src/postcss.config.ts
 create mode 100644 04.系统编码/Frontend/src/tes.babelrc
 create mode 100644 04.系统编码/Frontend/src/uilts/Coder.ts

diff --git a/04.系统编码/Backend/pom.xml b/04.系统编码/Backend/pom.xml
index 2e327c8..ff03b82 100644
--- a/04.系统编码/Backend/pom.xml
+++ b/04.系统编码/Backend/pom.xml
@@ -51,6 +51,12 @@
             <version>1.0.29</version>
         </dependency>
 
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.12.3</version>
+        </dependency>
+
         <!-- gif -->
         <dependency>
             <groupId>com.madgag</groupId>
@@ -58,6 +64,20 @@
             <version>1.4</version>
         </dependency>
 
+        <!-- Base64编码需要  -->
+        <dependency>
+            <groupId>org.apache.directory.studio</groupId>
+            <artifactId>org.apache.commons.codec</artifactId>
+            <version>1.8</version>
+        </dependency>
+
+
+        <dependency>
+            <groupId>org.bouncycastle</groupId>
+            <artifactId>bcprov-jdk15on</artifactId>
+            <version>1.59</version>
+        </dependency>
+
     </dependencies>
 
     <build>
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/UserController.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/UserController.java
index e6d642e..a2e4721 100644
--- a/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/UserController.java
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/controller/UserController.java
@@ -1,8 +1,11 @@
 package com.userinformation.backend.controller;
 
 import com.alibaba.druid.util.StringUtils;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import com.userinformation.backend.model.dao.User;
 import com.userinformation.backend.service.UserService;
+import com.userinformation.backend.util.Coder;
 import com.userinformation.backend.util.RequestResult;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -13,17 +16,19 @@ import java.util.Objects;
 @RestController
 @RequestMapping("user")
 public class UserController {
-    private final UserService userService;
 
+    private final ObjectMapper objectMapper = new ObjectMapper();
+    private final UserService userService;
     public UserController(UserService userService) { this.userService = userService; }
 
     @RequestMapping("userLogin")
-    public RequestResult userLogin(String userAccountNumber, String userPassword){
-        User user = userService.userLogin(userAccountNumber, userPassword);
+    public RequestResult userLogin(String data) throws Exception {
+        User paramUser = objectMapper.readValue(Coder.decrypt(data, Coder.DEFAULT_KEY), User.class);
+        User user = userService.userLogin(paramUser.getUserAccountNumber(), paramUser.getUserPassword());
         if(user == null){
             return RequestResult.fail("用户名或密码错误");
         }
-        return RequestResult.success(userService.userLogin(userAccountNumber, userPassword));
+        return RequestResult.success(user);
     }
 
     @RequestMapping("findUserCount")
@@ -32,8 +37,8 @@ public class UserController {
     }
 
     @RequestMapping("findAllUser")
-    public RequestResult findAllUserPage(Integer current, Integer size){
-        return RequestResult.success(userService.findAllUserPage(current, size));
+    public RequestResult findAllUserPage(Integer current, Integer size) throws Exception {
+        return RequestResult.success(Coder.encrypt(objectMapper.writeValueAsString(userService.findAllUserPage(current, size)), Coder.DEFAULT_KEY));
     }
 
     @RequestMapping("findUserByUserAccountNumber")
@@ -42,12 +47,13 @@ public class UserController {
     }
 
     @RequestMapping("findUserByUserName")
-    public RequestResult findUserByUserName(String userName, Integer current, Integer size){
-        return RequestResult.success(userService.findUserByUserName(userName, current, size));
+    public RequestResult findUserByUserName(String userName, Integer current, Integer size) throws Exception {
+        return RequestResult.success(Coder.encrypt(objectMapper.writeValueAsString(userService.findUserByUserName(userName, current, size)), Coder.DEFAULT_KEY));
     }
 
     @RequestMapping("insertUser")
-    public RequestResult insertUser(@RequestBody User user){
+    public RequestResult insertUser(String data) throws Exception {
+        User user = objectMapper.readValue(Coder.decrypt(data, Coder.DEFAULT_KEY), User.class);
         return RequestResult.success(userService.insertUser(user));
     }
 
@@ -57,7 +63,8 @@ public class UserController {
     }
 
     @RequestMapping("updateUser")
-    public RequestResult updateUser(@RequestBody User user){
+    public RequestResult updateUser(String data) throws Exception {
+        User user = objectMapper.readValue(Coder.decrypt(data, Coder.DEFAULT_KEY), User.class);
         return RequestResult.success(userService.updateUser(user));
     }
 }
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/handler/GlobalDefaultExceptionHandler.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/handler/GlobalDefaultExceptionHandler.java
index 3cd93eb..b9bbefe 100644
--- a/04.系统编码/Backend/src/main/java/com/userinformation/backend/handler/GlobalDefaultExceptionHandler.java
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/handler/GlobalDefaultExceptionHandler.java
@@ -1,5 +1,7 @@
 package com.userinformation.backend.handler;
 
+import javax.crypto.BadPaddingException;
+
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.ControllerAdvice;
 import org.springframework.web.bind.annotation.ExceptionHandler;
@@ -9,6 +11,14 @@ import com.userinformation.backend.util.RequestResult;
 @ControllerAdvice
 @Slf4j
 public class GlobalDefaultExceptionHandler {
+
+    @ExceptionHandler(BadPaddingException.class)
+    @ResponseBody
+    public RequestResult defaultBadPaddingExceptionHandler(BadPaddingException e) {
+        log.error("An error has occurred", e);
+        return RequestResult.fail("加密参数不合法,请重新请求");
+    }
+
     @ExceptionHandler(Exception.class)
     @ResponseBody
     public RequestResult defaultExceptionHandler(Exception e) {
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/model/dao/User.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/model/dao/User.java
index bce0ca6..230b873 100644
--- a/04.系统编码/Backend/src/main/java/com/userinformation/backend/model/dao/User.java
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/model/dao/User.java
@@ -5,10 +5,16 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
+import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
 import lombok.Data;
 
 import java.time.LocalDateTime;
 
+import org.springframework.format.annotation.DateTimeFormat;
+
 @Data
 @TableName("user")
 public class User {
@@ -28,5 +34,8 @@ public class User {
     private int userState;
     @TableField("user_registration_date")
     @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
+    @JsonSerialize(using = LocalDateTimeSerializer.class)
+    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime userRegistrationDate;
 }
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/util/BtoAAtoB.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/util/BtoAAtoB.java
new file mode 100644
index 0000000..0f687f1
--- /dev/null
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/util/BtoAAtoB.java
@@ -0,0 +1,122 @@
+package com.userinformation.backend.util;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+
+public class BtoAAtoB {
+
+
+
+    private static String base64hash = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+
+
+    public static boolean isMatcher(String inStr ,String reg){
+        Pattern pattern = Pattern.compile(reg);
+        Matcher matcher = pattern.matcher(inStr);
+        if(matcher.matches()){
+            return true;
+        }
+        return false;
+    }
+    /**
+     * btoa method
+     * @param inStr
+     * @return
+     */
+    public static String btoa(String inStr){
+//        if (/([^\u0000-\u00ff])/.test(s)) {
+//            throw new Error('INVALID_CHARACTER_ERR');
+//        }
+        if(inStr == null || isMatcher(inStr ,"([^\\u0000-\\u00ff])")){
+            return null;
+        }
+        StringBuilder result = new StringBuilder();
+        int i=0;
+        int mod=0;
+        int ascii;
+        int prev=0;
+        while (i < inStr.length()){
+            ascii = inStr.charAt(i);
+            mod = i % 3;
+
+
+            switch(mod){
+                case 0:
+                    result.append(String.valueOf(base64hash.charAt(ascii >> 2)));
+                    break;
+                case 1:
+                    result.append(String.valueOf(base64hash.charAt((prev & 3) << 4 | (ascii >> 4))));
+                    break;
+                case 2:
+                    result.append(String.valueOf(base64hash.charAt((prev & 0x0f) << 2 | (ascii >> 6))));
+                    result.append(String.valueOf(base64hash.charAt(ascii & 0x3f)));
+                    break;
+            }
+
+
+            prev = ascii;
+            i++;
+        }
+
+
+        if(mod == 0) {
+            result.append(String.valueOf(base64hash.charAt((prev & 3) << 4)));
+            result.append("==");
+        } else if (mod == 1) {
+            result.append(String.valueOf(base64hash.charAt((prev & 0x0f) << 2)));
+            result.append("=");
+        }
+
+
+        return result.toString();
+    }
+
+
+    /**
+     * // atob method
+     // 逆转encode的思路即可
+     * @param inStr
+     * @return
+     */
+    public static String atob(String inStr){
+        if(inStr == null) return null;
+        //s = s.replace(/\s|=/g, '');
+        inStr = inStr.replaceAll("\\s|=", "");
+        StringBuilder result = new StringBuilder();
+        int cur;
+        int prev=-1;
+//        Integer prev=null;
+        int mod;
+        int i=0;
+        while (i < inStr.length()){
+            cur = base64hash.indexOf(inStr.charAt(i));
+            mod = i % 4;
+            switch (mod){
+                case 0:
+                    break;
+                case 1:
+                    result.append(String.valueOf( (char)( prev << 2 | cur >> 4  ) ));
+                    break;
+                case 2:
+                    result.append(String.valueOf((char)( (prev & 0x0f) << 4 | cur >> 2) ));
+                    break;
+                case 3:
+                    result.append(String.valueOf( (char)((prev & 3) << 6 | cur) ));
+                    break;
+            }
+            prev = cur;
+            i++;
+        }
+
+
+
+
+        return result.toString();
+    }
+
+
+
+
+
+
+}
diff --git a/04.系统编码/Backend/src/main/java/com/userinformation/backend/util/Coder.java b/04.系统编码/Backend/src/main/java/com/userinformation/backend/util/Coder.java
new file mode 100644
index 0000000..c02dfc8
--- /dev/null
+++ b/04.系统编码/Backend/src/main/java/com/userinformation/backend/util/Coder.java
@@ -0,0 +1,121 @@
+package com.userinformation.backend.util;
+
+import javax.crypto.Cipher;
+import javax.crypto.spec.SecretKeySpec;
+import java.nio.charset.StandardCharsets;
+import java.security.SecureRandom;
+import java.util.Random;
+
+import org.apache.commons.codec.binary.Base64;
+
+/**
+ * @describe: Aes加密
+ * @author: xiaowuler
+ * @createTime: 2021-12-07 16:59
+ */
+public class Coder {
+
+    public static final String DEFAULT_KEY = "XiaowuleVeryCool";
+
+    /**
+     * 加密算法AES
+     */
+    private static final String KEY_ALGORITHM = "AES";
+
+    /**
+     * key的长度,Wrong key size: must be equal to 128, 192 or 256
+     * 传入时需要16、24、36
+     */
+    private static final Integer KEY_LENGTH = 16 * 8;
+
+    /**
+     * 算法名称/加密模式/数据填充方式
+     * 默认:AES/ECB/PKCS5Padding
+     */
+    private static final String ALGORITHMS = "AES/ECB/PKCS5Padding";
+
+    /**
+     * 后端AES的key,由静态代码块赋值
+     */
+    public static String key;
+
+    static {
+        key = getKey();
+    }
+
+    /**
+     * 获取key
+     */
+    public static String getKey() {
+        StringBuilder uid = new StringBuilder();
+        //产生16位的强随机数
+        Random rd = new SecureRandom();
+        for (int i = 0; i < KEY_LENGTH / 8; i++) {
+            //产生0-2的3位随机数
+            int type = rd.nextInt(3);
+            switch (type) {
+                case 0:
+                    //0-9的随机数
+                    uid.append(rd.nextInt(10));
+                    break;
+                case 1:
+                    //ASCII在65-90之间为大写,获取大写随机
+                    uid.append((char) (rd.nextInt(25) + 65));
+                    break;
+                case 2:
+                    //ASCII在97-122之间为小写,获取小写随机
+                    uid.append((char) (rd.nextInt(25) + 97));
+                    break;
+                default:
+                    break;
+            }
+        }
+        return uid.toString();
+    }
+
+    /**
+     * 加密
+     *
+     * @param content    加密的字符串
+     * @param encryptKey key值
+     */
+    public static String encrypt(String content, String encryptKey) throws Exception {
+        //设置Cipher对象
+        Cipher cipher = Cipher.getInstance(ALGORITHMS, getInstance());
+        cipher.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(encryptKey.getBytes(), KEY_ALGORITHM));
+
+        //调用doFinal
+        byte[] b = cipher.doFinal(content.getBytes(StandardCharsets.UTF_8));
+
+        // 转base64
+        return Base64.encodeBase64String(b);
+
+    }
+
+    /**
+     * 解密
+     *
+     * @param encryptStr 解密的字符串
+     * @param decryptKey 解密的key值
+     */
+    public static String decrypt(String encryptStr, String decryptKey) throws Exception {
+        //base64格式的key字符串转byte
+        byte[] decodeBase64 = Base64.decodeBase64(encryptStr);
+        //设置Cipher对象
+        Cipher cipher = Cipher.getInstance(ALGORITHMS, getInstance());
+        cipher.init(Cipher.DECRYPT_MODE, new SecretKeySpec(decryptKey.getBytes(), KEY_ALGORITHM));
+
+        //调用doFinal解密
+        byte[] decryptBytes = cipher.doFinal(decodeBase64);
+        return new String(decryptBytes);
+    }
+
+    private static org.bouncycastle.jce.provider.BouncyCastleProvider bouncyCastleProvider = null;
+
+    public static synchronized org.bouncycastle.jce.provider.BouncyCastleProvider getInstance() {
+        if (bouncyCastleProvider == null) {
+            bouncyCastleProvider = new org.bouncycastle.jce.provider.BouncyCastleProvider();
+        }
+        return bouncyCastleProvider;
+    }
+}
diff --git a/04.系统编码/Backend/src/main/resources/application.yml b/04.系统编码/Backend/src/main/resources/application.yml
index 73d76a2..4ba9876 100644
--- a/04.系统编码/Backend/src/main/resources/application.yml
+++ b/04.系统编码/Backend/src/main/resources/application.yml
@@ -1,5 +1,6 @@
 server:
   port: 8002
+#  port: 8082
 spring:
   datasource:
     url: jdbc:mysql://112.124.40.88:33306/user_information?useUnicode=true&characteEncoding=utf-8
@@ -7,13 +8,18 @@ spring:
     password: 3cqscbr@only1
 #    url: jdbc:mysql://10.124.102.10:3306/user_information?useUnicode=true&characteEncoding=utf-8
 #    username: root
+#    password: Njsqxj_sthj@2021
+#    url: jdbc:mysql://192.168.6.6:3306/njsthj?useUnicode=true&characteEncoding=utf-8
+#    username: njsthj
 #    password: Njsqxj_sthj@2021
     driver-class-name: com.mysql.cj.jdbc.Driver
 custom:
   image:
-    url: ${custom.parent-url}:8002/product
-    path: D:/Deployments/LamanRadar/product
+    url: ${custom.parent-url}:${server.port}/product
     gifPath: ${custom.image.path}/gif
-  parent-url: http://112.124.40.88
+#    path: D:/Deployments/LamanRadar/product
+#  parent-url: http://112.124.40.88
 #    path: /home/project/NJEnvironmentPlatform/html/product
 #  parent-url: http://10.124.102.10
+    path: /home/develop/product
+  parent-url: http://rdp.nagr.com.cn
diff --git a/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java b/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java
index 077638d..25dee09 100644
--- a/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java
+++ b/04.系统编码/Backend/src/test/java/com/userinformation/backend/UserInformationApplicationTests.java
@@ -1,17 +1,10 @@
 package com.userinformation.backend;
 
-import javax.imageio.ImageIO;
-
-import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import com.userinformation.backend.controller.ImageController;
+import com.userinformation.backend.util.Coder;
 
 @SpringBootTest
 class UserInformationApplicationTests {
@@ -20,15 +13,17 @@ class UserInformationApplicationTests {
     private ImageController imageController;
 
     @Test
-    void contextLoads() throws IOException {
-
-        List<String> files = new ArrayList<>(){{
-            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_RAIN.png");
-            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_Q2.png");
-            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_T2.png");
-            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_TN.png");
-            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_TX.png");
-        }};
+    void contextLoads() throws Exception {
+        String result =  Coder.decrypt("uVrfL42raAuOFIgASm1rhmg3xslRQWLRdvLK/jNElVxgm0mYldAXHWXe2ygUdkmZgKwuTQU8F4ntEeeHG+8Bcg==", "xiaowulezhencool");
+//        String result = BtoAAtoB.atob("JTdCJTIydXNlckFjY291bnROdW1iZXIlMjI6JTIyYWRtaW4lMjIsJTIydXNlclBhc3N3b3JkJTIyOiUyMjEyMzQ1NiUyMiU3RA==");
+        System.out.println();
+//        List<String> files = new ArrayList<>(){{
+//            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_RAIN.png");
+//            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_Q2.png");
+//            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_T2.png");
+//            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_TN.png");
+//            add("C:\\Users\\xiaowuler\\Desktop\\images (2)\\TFLD_TX.png");
+//        }};
 
 //        imageController.createGif(files);
 //        File inputFile = new File("C:\\Users\\xiaowuler\\Desktop\\images\\decision-support\\plan-advice\\control-experiment\\TFLD_Q2.tif");
diff --git a/04.系统编码/Backend/部署.md b/04.系统编码/Backend/部署.md
index 6452b9d..01da178 100644
--- a/04.系统编码/Backend/部署.md
+++ b/04.系统编码/Backend/部署.md
@@ -3,4 +3,7 @@
 ```
 nohup /usr/local/java/jdk-15/bin/java -jar UserInformation-0.0.1-SNAPSHOT.jar &
 ```
+```
+nohup /home/develop/jdk-15/bin/java -jar UserInformation-0.0.1-SNAPSHOT.jar &
+```
 
diff --git a/04.系统编码/Frontend/package-lock.json b/04.系统编码/Frontend/package-lock.json
index 6d881dc..f1f9b81 100644
--- a/04.系统编码/Frontend/package-lock.json
+++ b/04.系统编码/Frontend/package-lock.json
@@ -385,9 +385,9 @@
       "dev": true
     },
     "@types/node": {
-      "version": "16.11.10",
-      "resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-16.11.10.tgz",
-      "integrity": "sha512-3aRnHa1KlOEEhJ6+CvyHKK5vE9BcLGjtUpwvqYLRvYNQKMfabu3BwfJaA/SLW8dxe28LsNDjtHwePTuzn3gmOA==",
+      "version": "16.11.12",
+      "resolved": "https://registry.npmmirror.com/@types/node/download/@types/node-16.11.12.tgz",
+      "integrity": "sha512-+2Iggwg7PxoO5Kyhvsq9VarmPbIelXP070HMImEpbtGCoyWNINQj4wzjbQCXzdHTRXnqufutJb5KAURZANNBAw==",
       "dev": true
     },
     "@types/qs": {
@@ -875,6 +875,11 @@
         "which": "^2.0.1"
       }
     },
+    "crypto-js": {
+      "version": "4.1.1",
+      "resolved": "https://registry.nlark.com/crypto-js/download/crypto-js-4.1.1.tgz",
+      "integrity": "sha1-nkhbzwNSEEG9hYRHhrg/t2GXNs8="
+    },
     "csstype": {
       "version": "2.6.19",
       "resolved": "https://registry.npmmirror.com/csstype/download/csstype-2.6.19.tgz?cache=0&sync_timestamp=1637224507298&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Fcsstype%2Fdownload%2Fcsstype-2.6.19.tgz",
@@ -1503,6 +1508,11 @@
         "supports-color": "^7.0.0"
       }
     },
+    "js-md5": {
+      "version": "0.7.3",
+      "resolved": "https://registry.nlark.com/js-md5/download/js-md5-0.7.3.tgz",
+      "integrity": "sha1-tPL7sLMnRV9ZjWcn447Ccs0Jw/I="
+    },
     "js-tokens": {
       "version": "4.0.0",
       "resolved": "https://registry.nlark.com/js-tokens/download/js-tokens-4.0.0.tgz?cache=0&sync_timestamp=1619345098261&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fjs-tokens%2Fdownload%2Fjs-tokens-4.0.0.tgz",
diff --git a/04.系统编码/Frontend/package.json b/04.系统编码/Frontend/package.json
index 7cecb78..2f59800 100644
--- a/04.系统编码/Frontend/package.json
+++ b/04.系统编码/Frontend/package.json
@@ -9,7 +9,9 @@
     "axios": "^0.21.4",
     "browser-tiff.js": "^1.0.1",
     "element-plus": "^1.2.0-beta.4",
+    "js-md5": "^0.7.3",
     "moment": "^2.29.1",
+    "crypto-js": "^4.1.1",
     "qs": "^6.10.1",
     "typescript": "^4.5.2",
     "vue": "^3.0.4",
diff --git a/04.系统编码/Frontend/src/components/Login.vue b/04.系统编码/Frontend/src/components/Login.vue
index d93628c..afaa4b2 100644
--- a/04.系统编码/Frontend/src/components/Login.vue
+++ b/04.系统编码/Frontend/src/components/Login.vue
@@ -24,6 +24,7 @@ import { post } from "./../uilts/axios";
 import { useRouter } from "vue-router"
 import { ElMessage } from 'element-plus'
 import { setStaff } from "../uilts/storage";
+import { encrypt } from '../uilts/Coder';
 
 export default {
   name: 'Login',
@@ -60,9 +61,13 @@ export default {
           type: 'warning'
         })
       }else {
-        post("user/userLogin",{
+        let params = {
           userAccountNumber: option.inputName,
           userPassword: option.inputPassword
+        };
+
+        post("user/userLogin",{
+          data: encrypt(params)
         }).then((res :any)=>{
           if (res.error !=0){
             ElMessage.error({
diff --git a/04.系统编码/Frontend/src/components/SystemManagement.vue b/04.系统编码/Frontend/src/components/SystemManagement.vue
index bd1eeea..51329a9 100644
--- a/04.系统编码/Frontend/src/components/SystemManagement.vue
+++ b/04.系统编码/Frontend/src/components/SystemManagement.vue
@@ -92,6 +92,7 @@
   import {post} from "../uilts/axios";
   import {ElMessage} from 'element-plus'
   import {format} from '../uilts/String';
+import { decrypt, encrypt } from '../uilts/Coder';
 
 export default {
   name: 'SystemManagement',
@@ -125,8 +126,9 @@ export default {
         current: option.current,
         size: option.size
       }).then((res: any) => {
-        option.tableData = res.data.records;
-        option.total = res.data.total;
+        const data = decrypt(res.data);
+        option.tableData = data.records;
+        option.total = data.total;
       })
     }
 
@@ -223,7 +225,7 @@ export default {
     const submit = () => {
       if (verify()) return;
       if (option.title === '修改信息') {
-        post("user/updateUser", option.form, "application/json").then((res: any) => {
+        post("user/updateUser", {data: encrypt(option.form)}).then((res: any) => {
           option.dialogFormVisible = false
           if (res.error != 0) {
             ElMessage.error({
@@ -243,7 +245,7 @@ export default {
 
       if (option.title === '添加用户') {
         if (verify()) return;
-        post("user/insertUser", option.form, "application/json").then((res: any) => {
+        post("user/insertUser", {data: encrypt(option.form)}).then((res: any) => {
           option.dialogFormVisible = false
           if (res.error != 0) {
             ElMessage.error({
diff --git a/04.系统编码/Frontend/src/postcss.config.ts b/04.系统编码/Frontend/src/postcss.config.ts
new file mode 100644
index 0000000..4e9b2fa
--- /dev/null
+++ b/04.系统编码/Frontend/src/postcss.config.ts
@@ -0,0 +1,5 @@
+module.exports = { 
+    plugins: { 
+        'autoprefixer': {browsers: 'last 5 version'} 
+    } 
+}
\ No newline at end of file
diff --git a/04.系统编码/Frontend/src/tes.babelrc b/04.系统编码/Frontend/src/tes.babelrc
new file mode 100644
index 0000000..18f65e7
--- /dev/null
+++ b/04.系统编码/Frontend/src/tes.babelrc
@@ -0,0 +1,6 @@
+{
+    "presets": [
+        ["es2015", { "modules": false }]
+    ],
+    "plugins": ["transform-object-rest-spread"] //不能解析es6语法关键解决
+}
\ No newline at end of file
diff --git a/04.系统编码/Frontend/src/uilts/Coder.ts b/04.系统编码/Frontend/src/uilts/Coder.ts
new file mode 100644
index 0000000..1d191fe
--- /dev/null
+++ b/04.系统编码/Frontend/src/uilts/Coder.ts
@@ -0,0 +1,25 @@
+var CryptoJS: any;
+import("crypto-js").then((response) => {
+    CryptoJS = response;
+});
+const defaultKey = "XiaowuleVeryCool";
+
+export function encrypt(plaintext, key: string = defaultKey) {
+    if (plaintext instanceof Object) {
+        //JSON.stringify
+        plaintext = JSON.stringify(plaintext)
+    }
+    let encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(plaintext), CryptoJS.enc.Utf8.parse(key), {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
+    return encrypted.toString();
+}
+
+//解密
+export function decrypt(ciphertext, key: string = defaultKey) {
+    let decrypt = CryptoJS.AES.decrypt(ciphertext, CryptoJS.enc.Utf8.parse(key), {mode:CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});
+    let decString = CryptoJS.enc.Utf8.stringify(decrypt).toString();
+    if(decString.charAt(0) === "{" || decString.charAt(0) === "[" ){
+        //JSON.parse
+        decString = JSON.parse(decString);
+    }
+    return decString;
+}
\ No newline at end of file
diff --git a/04.系统编码/Frontend/src/uilts/Config.ts b/04.系统编码/Frontend/src/uilts/Config.ts
index 5bdd79a..649d721 100644
--- a/04.系统编码/Frontend/src/uilts/Config.ts
+++ b/04.系统编码/Frontend/src/uilts/Config.ts
@@ -2,8 +2,9 @@ import { Moment } from "moment";
 import { format } from "./String";
 
 export class Config {
-    public static parentUrl: string = "http://112.124.40.88:8002/product/picture";
+    // public static parentUrl: string = "http://112.124.40.88:8002/product/picture";
     // public static parentUrl: string = "http://10.124.102.10:8002/product/picture";
+    public static parentUrl: string = "http://rdp.nagr.com.cn:8082/product/picture";
 }
 
 export class MicrowaveRadiationConfig {
diff --git a/04.系统编码/Frontend/src/uilts/axios.ts b/04.系统编码/Frontend/src/uilts/axios.ts
index 06a683a..f3c7cbe 100644
--- a/04.系统编码/Frontend/src/uilts/axios.ts
+++ b/04.系统编码/Frontend/src/uilts/axios.ts
@@ -5,7 +5,9 @@ import { ElLoading } from 'element-plus'
 
 let loading = null;
 const service = axios.create({
-    baseURL:"http://112.124.40.88:8002",
+    // baseURL:"http://112.124.40.88:8002",
+    // baseURL: '',
+    baseURL: 'http://localhost:8002',
     timeout: 500000
 })