diff --git a/src/assets/js/utils/cryptoJsUtilV2.js b/src/assets/js/utils/cryptoJsUtilV2.js new file mode 100644 index 000000000..1282179f0 --- /dev/null +++ b/src/assets/js/utils/cryptoJsUtilV2.js @@ -0,0 +1,47 @@ +import CryptoJS from 'crypto-js' +export default { + AESEncrypt: function(data, keys) { + //加密 + var key = CryptoJS.enc.Hex.parse(keys) + var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') //偏移量 + var encrypted = CryptoJS.AES.encrypt(data, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() + }, + AESDecrypt: function(encrypted, keys) { + //解密 + var key = CryptoJS.enc.Hex.parse(keys) + var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') + var decrypted = CryptoJS.AES.decrypt(encrypted, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }) + return CryptoJS.enc.Utf8.stringify(decrypted) + }, + AESCacheEncrypt: function(data, keys) { + //加密 緩存 + var key = CryptoJS.enc.Hex.parse(keys) + var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') //偏移量 + var encrypted = CryptoJS.AES.encrypt(data, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }) + return encrypted.toString() + }, + AESCacheDecrypt: function(encrypted, keys) { + //解密 緩存 + var key = CryptoJS.enc.Hex.parse(keys) + var iv = CryptoJS.enc.Utf8.parse('0123456789ABCDEF') + var decrypted = CryptoJS.AES.decrypt(encrypted, key, { + iv: iv, + mode: CryptoJS.mode.CBC, + padding: CryptoJS.pad.Pkcs7 + }) + return CryptoJS.enc.Utf8.stringify(decrypted) + } +} diff --git a/src/assets/js/utils/request.js b/src/assets/js/utils/request.js index 2b98ee9e9..ae9d0f4b2 100644 --- a/src/assets/js/utils/request.js +++ b/src/assets/js/utils/request.js @@ -1,5 +1,5 @@ import axios from 'axios' -// import AESTools from '@/assets/js/utils/cryptoJsUtil' +import AESToolsV2 from '@/assets/js/utils/cryptoJsUtilV2' import { MD5, RSAEncrypt, @@ -155,14 +155,18 @@ service.interceptors.request.use( message: '加载中……' }) } - // 生成本次请求随机密钥 let masterKey - if (!window.localStorage.getItem('masterKey')) { - masterKey = randomString(); - window.localStorage.setItem('masterKey',masterKey) - } else { - masterKey = window.localStorage.getItem('masterKey') + if(configApp.API_VERSION == 'v3'){ + // 生成本次请求随机密钥 + if (!window.localStorage.getItem('masterKey')) { + masterKey = randomString(); + window.localStorage.setItem('masterKey',masterKey) + } else { + masterKey = window.localStorage.getItem('masterKey') + } } + // token 不存在初始化处理 + let token = CacheUtils.getLocItem('token') /** * 请求拦截处理(待添加 判断走统一网关处理) */ @@ -195,15 +199,13 @@ service.interceptors.request.use( console.log(AESDecrypt(config.data.data, masterKey)); } }else if(configApp.API_VERSION == 'v2'){ - let encrypt = AESEncrypt(JSON.stringify(config.data), configApp.REQ_PWD) + config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token')) + let encrypt = AESToolsV2.AESEncrypt(JSON.stringify(config.data), configApp.REQ_PWD) config.data = { data: encrypt } } - // config.data = { data: encrypt } } } - // token 不存在初始化处理 - let token = CacheUtils.getLocItem('token') if (!token) { console.log('token====>>', token) // 设备类型 @@ -229,7 +231,6 @@ service.interceptors.request.use( // 添加请时间戳 let timeStr = new Date().getTime() + '' config.headers['timeStr'] = timeStr - // config.headers['signature'] = MD5(timeStr + CacheUtils.getLocItem('token')) return config }, error => { @@ -249,20 +250,25 @@ service.interceptors.response.use( /api\/$/.test(response.config.url.split(configApp.API_VERSION)[0]) ) { if (res.response) { - // 正常情況返回必有response 节点 - // 返回结果的随机密钥 - let masterKey; - if (!window.localStorage.getItem('masterKey')) { - return Promise.reject('密钥失效') - } else { - masterKey = window.localStorage.getItem('masterKey'); - } - console.log('请求结果response' + response) - console.log('请求结果masterKey:' + masterKey) - console.log(JSON.parse(AESDecrypt(response.data.response, masterKey))) - // 使用随机密钥解密返回结果data - res = JSON.parse(AESDecrypt(res.response, masterKey)) - // res = JSON.parse(AESTools.AESDecrypt(res.response, configApp.REQ_PWD)) + if(configApp.API_VERSION == 'v3'){ + // 正常情況返回必有response 节点 + // 返回结果的随机密钥 + let masterKey; + if (!window.localStorage.getItem('masterKey')) { + return Promise.reject('密钥失效') + } else { + masterKey = window.localStorage.getItem('masterKey'); + } + console.log('请求结果response' + response) + console.log('请求结果masterKey:' + masterKey) + console.log(JSON.parse(AESDecrypt(response.data.response, masterKey))) + // 使用随机密钥解密返回结果data + res = JSON.parse(AESDecrypt(res.response, masterKey)) + }else if(configApp.API_VERSION == 'v2'){ + // 使用固定密钥解密返回结果data + res = JSON.parse(AESToolsV2.AESDecrypt(res.response, configApp.REQ_PWD)) + console.log(JSON.parse(AESToolsV2.AESDecrypt(res.response, configApp.REQ_PWD)),'JSON.parse(AESDecrypt(res.response, configApp.REQ_PWD))') + } } } diff --git a/src/config/index.js b/src/config/index.js index 84f4b77a0..8915ead85 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -19,7 +19,7 @@ let apiDomain, imgDomain, assetsUrl, mainUrl, payUrl, zssqUrl, REQ_PWD, CACHE_EN console.log('环境:', process.env.VUE_APP_FLAG) switch (process.env.VUE_APP_FLAG) { case 'dev': - apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/v1' // 国富api ///api/v1 + apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/v2' // 国富api ///api/v1 imgDomain = 'https://iagentsales-test3.e-guofu.com:5443/updown' // dev // 静态服务资源 assetsUrl = 'https://iagentsales-test2.e-guofu.com:443/app/' @@ -31,7 +31,7 @@ switch (process.env.VUE_APP_FLAG) { // zssqUrl = 'https://iagentsales-test2.e-guofu.com:5100/html/test/index.html#/' REQ_PWD = '41424344454631323334353637383930' CACHE_ENCRYP = '41424344454631323334353637383930' - API_VERSION = 'v1' + API_VERSION = 'v2' break case 'uat': apiDomain = 'https://iagentsales-test2.e-guofu.com:5200/api/v1' // 国富api