|
@@ -142,23 +142,36 @@ Vue.prototype.$axios.interceptors.response.use(
|
|
|
URL.revokeObjectURL(elink.href) // 释放URL 对象
|
|
|
document.body.removeChild(elink)
|
|
|
}
|
|
|
-
|
|
|
response.data = ''
|
|
|
response.headers['content-type'] = 'text/json'
|
|
|
return response
|
|
|
} else {
|
|
|
const res = response.data
|
|
|
+ let returnStr = res.split("&")
|
|
|
+ let returnData = returnStr[0].split("=")[1]
|
|
|
+ let returnSign = returnStr[1].split("=")[1]
|
|
|
+ // 解密
|
|
|
+ let decData = doDecryptStr(returnData)
|
|
|
+ // 验签
|
|
|
+ let verifyResult = doVerifySignature(decData,returnSign)
|
|
|
+
|
|
|
+ if (!verifyResult){
|
|
|
+ return Promise.reject(new Error('返回数据验签失败' || 'Error'))
|
|
|
+ }
|
|
|
+
|
|
|
+ let data = JSON.parse(decData)
|
|
|
+ alert(data)
|
|
|
// if the custom code is not 20000, it is judged as an error.
|
|
|
//console.log(res.code)
|
|
|
- if (res.code !== 0) {
|
|
|
+ if (data.code !== 0) {
|
|
|
Message({
|
|
|
- message: res.message || 'Error',
|
|
|
+ message: data.message || 'Error',
|
|
|
type: 'error',
|
|
|
duration: 5 * 1000
|
|
|
})
|
|
|
|
|
|
// 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
|
|
|
- if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
|
|
|
+ if (data.code === 50008 || data.code === 50012 || data.code === 50014) {
|
|
|
// to re-login
|
|
|
MessageBox.confirm('You have been logged out, you can cancel to stay on this page, or log in again', 'Confirm logout', {
|
|
|
confirmButtonText: 'Re-Login',
|
|
@@ -170,9 +183,9 @@ Vue.prototype.$axios.interceptors.response.use(
|
|
|
})
|
|
|
})
|
|
|
}
|
|
|
- return Promise.reject(new Error(res.message || 'Error'))
|
|
|
+ return Promise.reject(new Error(data.message || 'Error'))
|
|
|
} else {
|
|
|
- return res
|
|
|
+ return data
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -235,6 +248,24 @@ new Vue({
|
|
|
render: h => h(App)
|
|
|
})
|
|
|
|
|
|
+export function test(){
|
|
|
+ let sm2 = require('sm-crypto').sm2;
|
|
|
+ let cipherMode = 1
|
|
|
+ // 加密
|
|
|
+ let encryptData = sm2.doEncrypt('1122加密', '0460ff8c8c306fe62f6f9d11c5c82c30d10bbbc703da094e423072cac7dc663c97fad52eccb34f311f47a07f280de157ba4f2aa659cabe749121384b9376ea2ed2', cipherMode);
|
|
|
+ let sm3 = require('sm-crypto').sm2;
|
|
|
+ // 签名
|
|
|
+ let sign = sm3.doSignature('1122加密','6155d63ee27cbeca07f3e40c4f8856f1be8119fcbda1aadc7e0e595e52bad7bd')
|
|
|
+ // 解密
|
|
|
+ let sm4 = require('sm-crypto').sm2;
|
|
|
+ let doDecrypt = sm4.doDecrypt(encryptData, privateKey1, cipherMode);
|
|
|
+ alert('解密:'+doDecrypt)
|
|
|
+ // 验签
|
|
|
+ let sm5 = require('sm-crypto').sm2;
|
|
|
+ let verifyResult = sm5.doVerifySignature(doDecrypt, sign, publicKey2) // 验签结果
|
|
|
+ alert('验签:'+verifyResult)
|
|
|
+}
|
|
|
+
|
|
|
// 加密:
|
|
|
export function doEncrypt(msgString) {
|
|
|
// let msg = msgString;
|
|
@@ -254,25 +285,25 @@ export function doEncrypt(msgString) {
|
|
|
|
|
|
// 解密
|
|
|
export function doDecryptStr(enStr) {
|
|
|
- let msg = enStr;
|
|
|
- if (typeof (enStr) !== 'string') {
|
|
|
- msg = JSON.stringify(enStr);
|
|
|
- }
|
|
|
+ // let msg = enStr;
|
|
|
+ // if (typeof (enStr) !== 'string') {
|
|
|
+ // msg = JSON.stringify(enStr);
|
|
|
+ // }
|
|
|
|
|
|
let sm2 = require('sm-crypto').sm2;
|
|
|
// 1 - C1C3C2; 0 - C1C2C3; 默认为1
|
|
|
let cipherMode = 1
|
|
|
|
|
|
// 加密后的密文,需要前去掉04。因为doDecrypt中自行添加了04,后端加密代码也自行添加了04
|
|
|
- let en = enStr.data.substr(2)
|
|
|
+ // let en = enStr.data.substr(2)
|
|
|
// 解密结果
|
|
|
- let doDecrypt = sm2.doDecrypt(en, privateKey1, cipherMode);
|
|
|
+ let doDecrypt = sm2.doDecrypt(enStr, privateKey1, cipherMode);
|
|
|
// 解密后类型转换
|
|
|
let objData = JSON.parse(doDecrypt)
|
|
|
- return objData;
|
|
|
+ return doDecrypt;
|
|
|
}
|
|
|
|
|
|
-// 签名:
|
|
|
+// 签名
|
|
|
export function doSign(msgString) {
|
|
|
let sm2 = require('sm-crypto').sm2;
|
|
|
// 1 - C1C3C2; 0 - C1C2C3; 默认为1
|
|
@@ -281,3 +312,13 @@ export function doSign(msgString) {
|
|
|
let sign = sm2.doSignature(msgString,privateKey1, { hash:true, der:true })
|
|
|
return sign;
|
|
|
}
|
|
|
+
|
|
|
+// 验签
|
|
|
+export function doVerifySignature(msgString,sigValueHex) {
|
|
|
+ let sm2 = require('sm-crypto').sm2;
|
|
|
+ // 1 - C1C3C2; 0 - C1C2C3; 默认为1
|
|
|
+ let cipherMode = 1
|
|
|
+ // 签名
|
|
|
+ let verifyResult = sm2.doVerifySignature(msgString, sigValueHex, publicKey2,{ hash:true, der:true }) // 验签结果
|
|
|
+ return verifyResult;
|
|
|
+}
|