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