/** * 加解密工具包 * * @author terrfly * @site https://www.jeepay.vip * @date 2021/5/16 17:35 */ import { SM4 } from 'gm-crypto' import appConfig from '@/config/appConfig.js' let HEX_KEY = null // 字符串转16进制 function str2hex(str) { var val = '' for (var i = 0; i < str.length; i++) { if (val == '') val = str.charCodeAt(i).toString(16) else val += str.charCodeAt(i).toString(16) } val += '' return val } // 获取hex秘钥 function getHexKey(){ if(!HEX_KEY){ HEX_KEY = str2hex(appConfig.encryptKey) } return HEX_KEY } // 解密 (http响应数据, 做通用处理) export function sm4DecryptByResData(data){ if(!data){ return data } let res = SM4.decrypt(data, getHexKey(), { inputEncoding: 'base64', outputEncoding: 'utf8' }) if(!res){ return res } return JSON.parse(res)['originData'] } // 加密 (http响应数据, 做通用处理) export function sm4EncryptByReqData(data){ if(!data){ return data } // 加密处理 let encryptData = SM4.encrypt(JSON.stringify(data), getHexKey(), { inputEncoding: 'utf8', outputEncoding: 'base64' }) return {encryptData : encryptData} }