|
|
@@ -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
|