hmp %!s(int64=4) %!d(string=hai) anos
pai
achega
bd7f412b19
Modificáronse 5 ficheiros con 51 adicións e 85 borrados
  1. 5 4
      package-lock.json
  2. 1 1
      package.json
  3. 11 0
      src/router/axios.js
  4. 32 78
      src/util/crypto.js
  5. 2 2
      vue.config.js

+ 5 - 4
package-lock.json

@@ -3626,8 +3626,9 @@
     },
     "crypto-js": {
       "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz",
-      "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw=="
+      "resolved": "https://registry.nlark.com/crypto-js/download/crypto-js-4.1.1.tgz?cache=0&sync_timestamp=1626954954639&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fcrypto-js%2Fdownload%2Fcrypto-js-4.1.1.tgz",
+      "integrity": "sha1-nkhbzwNSEEG9hYRHhrg/t2GXNs8=",
+      "dev": true
     },
     "css-color-names": {
       "version": "0.0.4",
@@ -6838,8 +6839,8 @@
     },
     "js-md5": {
       "version": "0.7.3",
-      "resolved": "https://registry.npmjs.org/js-md5/-/js-md5-0.7.3.tgz",
-      "integrity": "sha512-ZC41vPSTLKGwIRjqDh8DfXoCrdQIyBgspJVPXHBGu4nZlAEvG3nf+jO9avM9RmLiGakg7vz974ms99nEV0tmTQ=="
+      "resolved": "https://registry.npm.taobao.org/js-md5/download/js-md5-0.7.3.tgz",
+      "integrity": "sha1-tPL7sLMnRV9ZjWcn447Ccs0Jw/I="
     },
     "js-message": {
       "version": "1.0.7",

+ 1 - 1
package.json

@@ -16,7 +16,6 @@
     "axios": "^0.18.0",
     "babel-polyfill": "^6.26.0",
     "classlist-polyfill": "^1.2.0",
-    "crypto-js": "^4.0.0",
     "echarts": "^5.2.1",
     "element-ui": "^2.15.1",
     "js-base64": "^2.5.1",
@@ -39,6 +38,7 @@
     "@vue/cli-plugin-eslint": "^3.1.5",
     "@vue/cli-service": "^3.1.4",
     "chai": "^4.1.2",
+    "crypto-js": "^4.1.1",
     "node-sass": "^4.12.0",
     "sass-loader": "^7.0.1",
     "vue-template-compiler": "^2.5.17",

+ 11 - 0
src/router/axios.js

@@ -15,6 +15,8 @@ import website from '@/config/website';
 import {Base64} from 'js-base64';
 import NProgress from 'nprogress';
 import 'nprogress/nprogress.css';
+import crypto from '@/util/crypto.js';
+
 
 //默认超时时间
 axios.defaults.timeout = 10000;
@@ -35,6 +37,7 @@ axios.interceptors.request.use(config => {
   const meta = (config.meta || {});
   const isToken = meta.isToken === false;
   config.headers['Authorization'] = `Basic ${Base64.encode(`${website.clientId}:${website.clientSecret}`)}`;
+  config.headers['Content-Type'] = 'application/json;charset=UTF-8';
   //让每个请求携带token
   if (getToken() && !isToken) {
     config.headers[website.tokenHeader] = 'bearer ' + getToken()
@@ -47,6 +50,14 @@ axios.interceptors.request.use(config => {
   if (config.method === 'post' && meta.isSerialize === true) {
     config.data = serialize(config.data);
   }
+  //报文加密
+  console.log(config.method === 'post',"/*************");
+  if (config.method === 'post' && config.data) {
+    let encrypt = crypto.encrypt(JSON.stringify(config.data))
+    config.data=encrypt
+  }
+
+
   return config
 }, error => {
   return Promise.reject(error)

+ 32 - 78
src/util/crypto.js

@@ -1,80 +1,34 @@
-import CryptoJS from 'crypto-js'
-
-export default class crypto {
-  // 使用AesUtil.genAesKey()生成,需和后端配置保持一致
-  static aesKey = "O2BEeIv399qHQNhD6aGW8R8DEj4bqHXm";
-
-  // 使用DesUtil.genDesKey()生成,需和后端配置保持一致
-  static desKey = "jMVCBsFGDQr1USHo";
-
-  /**
-   * aes 加密方法
-   * @param data
-   * @returns {*}
-   */
-  static encrypt(data) {
-    return this.encryptAES(data, this.aesKey);
-  }
-
-  /**
-   * aes 解密方法
-   * @param data
-   * @returns {*}
-   */
-  static decrypt(data) {
-    return this.decryptAES(data, this.aesKey);
-  }
-
-  /**
-   * aes 加密方法,同java:AesUtil.encryptToBase64(text, aesKey);
-   */
-  static encryptAES(data, key) {
-    const dataBytes = CryptoJS.enc.Utf8.parse(data);
-    const keyBytes = CryptoJS.enc.Utf8.parse(key);
-    const encrypted = CryptoJS.AES.encrypt(dataBytes, keyBytes, {
-      iv: keyBytes,
-      mode: CryptoJS.mode.CBC,
-      padding: CryptoJS.pad.Pkcs7
-    });
-    return CryptoJS.enc.Base64.stringify(encrypted.ciphertext);
-  }
-
-  /**
-   * aes 解密方法,同java:AesUtil.decryptFormBase64ToString(encrypt, aesKey);
-   */
-  static decryptAES(data, key) {
-    const keyBytes = CryptoJS.enc.Utf8.parse(key);
-    const decrypted = CryptoJS.AES.decrypt(data, keyBytes, {
-      iv: keyBytes,
-      mode: CryptoJS.mode.CBC,
-      padding: CryptoJS.pad.Pkcs7
-    });
-    return CryptoJS.enc.Utf8.stringify(decrypted);
-  }
-
-  /**
-   * des 加密方法,同java:DesUtil.encryptToBase64(text, desKey)
-   */
-  static encryptDES(data, key) {
-    const keyHex = CryptoJS.enc.Utf8.parse(key);
-    const encrypted = CryptoJS.DES.encrypt(data, keyHex, {
-      mode: CryptoJS.mode.ECB,
-      padding: CryptoJS.pad.Pkcs7
-    });
-    return encrypted.toString();
-  }
+var CryptoJS = require("crypto-js");
+console.log(CryptoJS.HmacSHA1("Message", "Key"));
+
+let crypto = {}
+
+//前后端定义的密钥,AES使用16位
+const CRYPTOJS_KEY = "uAY9ugkHQpvozZeA";
+// 加密
+crypto.encrypt = (plaintText) => {
+  var options = {
+    mode: CryptoJS.mode.ECB,
+    padding: CryptoJS.pad.Pkcs7
+  };
+  var key = CryptoJS.enc.Utf8.parse(CRYPTOJS_KEY);
+  var encryptedData = CryptoJS.AES.encrypt(plaintText, key, options);
+  var encryptedBase64Str = encryptedData.toString().replace(/\//g, "_");
+  encryptedBase64Str = encryptedBase64Str.replace(/\+/g, "-");
+  return encryptedBase64Str;
+}
 
-  /**
-   * des 解密方法,同java:DesUtil.decryptFormBase64(encryptBase64, desKey);
-   */
-  static decryptDES(data, key) {
-    const keyHex = CryptoJS.enc.Utf8.parse(key);
-    const decrypted = CryptoJS.DES.decrypt({
-      ciphertext: CryptoJS.enc.Base64.parse(data)
-    }, keyHex, {
-      mode: CryptoJS.mode.ECB,
-      padding: CryptoJS.pad.Pkcs7
-    });
-    return decrypted.toString(CryptoJS.enc.Utf8);
-  }
+//解密
+crypto.decrypt = (encryptedBase64Str) => {
+  var vals = encryptedBase64Str.replace(/\-/g, '+').replace(/_/g, '/');
+  var options = {
+    mode: CryptoJS.mode.ECB,
+    padding: CryptoJS.pad.Pkcs7
+  };
+  var key = CryptoJS.enc.Utf8.parse(CRYPTOJS_KEY);
+  var decryptedData = CryptoJS.AES.decrypt(vals, key, options);
+  var decryptedStr = CryptoJS.enc.Utf8.stringify(decryptedData);
+  return decryptedStr
 }
+
+export default crypto

+ 2 - 2
vue.config.js

@@ -26,9 +26,9 @@ module.exports = {
     proxy: {
       '/api': {
         //本地服务接口地址
-        target: 'http://localhost:2366',
+        // target: 'http://localhost:2366',
+        target: 'http://139.159.240.119:2366/',
         // target: 'https://ldt.guosen-fumao.cn/api',
-
         //远程演示服务地址,可用于直接启动项目
         //target: 'https://saber.bladex.vip/api',
         ws: true,