diff --git a/README.md b/README.md index e69de29..4d1342c 100644 --- a/README.md +++ b/README.md @@ -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) +} + +``` \ No newline at end of file