73 lines
1.2 KiB
JavaScript
73 lines
1.2 KiB
JavaScript
/**
|
||
* 加解密工具包
|
||
*
|
||
* @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}
|
||
}
|
||
|