Просмотр исходного кода

:tada: 新增加密解密工具

smallchill 6 лет назад
Родитель
Сommit
32f1d6864e
2 измененных файлов с 63 добавлено и 0 удалено
  1. 1 0
      package.json
  2. 62 0
      src/util/crypto.js

+ 1 - 0
package.json

@@ -15,6 +15,7 @@
     "axios": "^0.18.0",
     "babel-polyfill": "^6.26.0",
     "classlist-polyfill": "^1.2.0",
+    "crypto-js": "^4.0.0",
     "element-ui": "^2.13.2",
     "js-base64": "^2.5.1",
     "js-cookie": "^2.2.0",

+ 62 - 0
src/util/crypto.js

@@ -0,0 +1,62 @@
+import CryptoJS from 'crypto-js'
+
+export default class crypto {
+  //使用AesUtil.genAesKey()生成,需和后端配置保持一致
+  static aesKey = "O2BEeIv399qHQNhD6aGW8R8DEj4bqHXm";
+
+  //使用DesUtil.genDesKey()生成,需和后端配置保持一致
+  static desKey = "jMVCBsFGDQr1USHo";
+
+  /**
+   * aes 加密方法,同java:AesUtil.encryptToBase64(text, aesKey);
+   */
+  static encryptAES(data, key) {
+    let dataBytes = CryptoJS.enc.Utf8.parse(data);
+    let keyBytes = CryptoJS.enc.Utf8.parse(key);
+    let 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) {
+    let keyBytes = CryptoJS.enc.Utf8.parse(key);
+    let 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) {
+    let keyHex = CryptoJS.enc.Utf8.parse(key);
+    let encrypted = CryptoJS.DES.encrypt(data, keyHex, {
+      mode: CryptoJS.mode.ECB,
+      padding: CryptoJS.pad.Pkcs7
+    });
+    return encrypted.toString();
+  }
+
+  /**
+   * des 解密方法,同java:DesUtil.decryptFormBase64(encryptBase64, desKey);
+   */
+  static decryptDES(data, key) {
+    let keyHex = CryptoJS.enc.Utf8.parse(key);
+    let 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);
+  }
+}