master
parent
8daaecf8c3
commit
bdeda904f3
@ -0,0 +1,67 @@ |
||||
```js |
||||
import SHA1 from 'crypto-js/sha1' |
||||
import { sm4 } from 'miniprogram-sm-crypto' |
||||
|
||||
// 接口签名 |
||||
export const genSign = params => { |
||||
// 获取预先设置为环境变量的 APPKEY |
||||
let key = '{your secreat-key}' |
||||
let keys = [] |
||||
for (let key in params) { |
||||
keys.push(key) |
||||
} |
||||
// 参数名 ASCII 码从小到大排序(字典序) |
||||
keys.sort() |
||||
// 转成键值对 |
||||
let paramPair = [] |
||||
for (let i = 0, len = keys.length; i < len; i++) { |
||||
let k = keys[i] |
||||
let itm = params[k] |
||||
if (typeof itm == 'object') { |
||||
itm = JSON.stringify(itm) |
||||
} |
||||
paramPair.push(k + '=' + itm) // base64 编码 |
||||
} |
||||
// 最后加上 key |
||||
paramPair.push('key=' + key) |
||||
// 拼接 |
||||
let stringSignTemp = paramPair.join('&') |
||||
|
||||
console.log('stringSignTemp:' + stringSignTemp) |
||||
let sign = SHA1(stringSignTemp).toString().toUpperCase() |
||||
|
||||
return sign |
||||
} |
||||
|
||||
// 数据解密 |
||||
export const decodeData = data => { |
||||
//字符串转byte数组 |
||||
const stringToByte = function (str) { |
||||
var bytes = new Array() |
||||
var len, c |
||||
len = str.length |
||||
for (var i = 0; i < len; i++) { |
||||
c = str.charCodeAt(i) |
||||
if (c >= 0x010000 && c <= 0x10ffff) { |
||||
bytes.push(((c >> 18) & 0x07) | 0xf0) |
||||
bytes.push(((c >> 12) & 0x3f) | 0x80) |
||||
bytes.push(((c >> 6) & 0x3f) | 0x80) |
||||
bytes.push((c & 0x3f) | 0x80) |
||||
} else if (c >= 0x000800 && c <= 0x00ffff) { |
||||
bytes.push(((c >> 12) & 0x0f) | 0xe0) |
||||
bytes.push(((c >> 6) & 0x3f) | 0x80) |
||||
bytes.push((c & 0x3f) | 0x80) |
||||
} else if (c >= 0x000080 && c <= 0x0007ff) { |
||||
bytes.push(((c >> 6) & 0x1f) | 0xc0) |
||||
bytes.push((c & 0x3f) | 0x80) |
||||
} else { |
||||
bytes.push(c & 0xff) |
||||
} |
||||
} |
||||
return bytes |
||||
} |
||||
const key = stringToByte('{your secreat-key1}') |
||||
return sm4.decrypt(data, key) |
||||
} |
||||
|
||||
``` |
Loading…
Reference in new issue