123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- import {
- ksort
- } from "../util/ksort.js";
- import {
- md5
- } from "../util/md5.js";
- import {
- sha1
- } from "../util/sha1.js";
- import {
- sm4Key
- } from "../network/api.js";
- import {
- SM4Util
- } from '../util/sm4.js'
-
- const s4 = new SM4Util()
-
- const _signCode = "etc123456"; //签名码
-
- function pad2(n) {
- return n < 10 ? "0" + n : n;
- }
-
- //获取时间ymdHis
- function getDate() {
- var date = new Date();
- return (
- date.getFullYear().toString() +
- pad2(date.getMonth() + 1) +
- pad2(date.getDate()) +
- pad2(date.getHours()) +
- pad2(date.getMinutes()) +
- pad2(date.getSeconds()) +
- pad2(date.getMilliseconds())
- );
- }
-
- /**
- * 获取随机数
- */
- function generateMixed(n) {
- var chars = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"];
- var res = "";
- for (var i = 0; i < n; i++) {
- var id = Math.ceil(Math.random() * 8);
- res += chars[id];
- }
- return res;
- }
-
- //签名
- function sign(data, signCode) {
- data = ksort(data);
- var signStr = "";
- var requestId = false;
- for (let k in data) {
- if (k != "sign") {
- if (k == "requestId") {
- requestId = data[k];
- }
- signStr += k + "=" + data[k] + "&";
- }
- }
- signStr += "signCode=" + signCode;
- // console.log("signStr*************"+signStr);
- if (!requestId) {
- return false;
- }
- signStr = md5(signStr);
- signStr = signStr.toUpperCase();
- // console.log('MD5**************' + signStr);
- signStr += requestId;
- // console.log('requestId**************' + signStr);
- signStr = sha1(signStr);
- signStr = signStr.toUpperCase();
- // console.log('SHA1**************' + signStr);
- return signStr;
- }
-
- //arrayToJsonString array 转json字符串
- export function arrayToJsonString(array) {
- var json = {};
- for (var i in array) {
- if (array[i] instanceof Array) {
- json[i] = {};
- for (var o in array[i]) {
- if (array[i][o] instanceof Array) {
- json[i][o] = {};
- for (var q in array[i][o]) {
- if (array[i][o][q] instanceof Array) {
- json[i][o][q] = {};
- for (var w in array[i][o][q]) {
- json[i][o][q][w] = array[i][o][q][w];
- }
- } else {
- json[i][o][q] = array[i][o][q];
- }
- }
- } else {
- json[i][o] = array[i][o];
- }
- }
- } else {
- json[i] = array[i];
- }
- }
- return JSON.stringify(json);
- }
-
- /**
- *json字符串转换成json对象
- */
- export function stringToJson(data) {
- return JSON.parse(data);
- }
-
- //array转json对象
- export function arrayToJson(array) {
- return stringToJson(arrayToJsonString(array));
- }
-
- //时间格式化
- export function formatTime(date) {
- const year = date.getFullYear();
- const month = date.getMonth() + 1;
- const day = date.getDate();
- const hour = date.getHours();
- const minute = date.getMinutes();
- const second = date.getSeconds();
-
- return `${[year, month, day].map(formatNumber).join("-")}T${[
- hour,
- minute,
- second,
- ]
- .map(formatNumber)
- .join(":")}`;
- }
-
- function formatNumber(n) {
- n = n.toString();
- return n[1] ? n : `0${n}`;
- }
-
- function textToBase64(text, key, iv) {
- const keyBytes = new TextEncoder().encode(key);
- const ivBytes = new TextEncoder().encode(iv);
- const textBytes = new TextEncoder().encode(text);
- const encrypted = sm4.encrypt(textBytes, keyBytes, {
- mode: 'cbc',
- iv: ivBytes
- });
- console.log('输出内容', encrypted)
- const base64 = uni.arrayBufferToBase64(encrypted);
- return base64;
- }
-
- //调用中台参数
- export function encryption(ifCode, subdata, type) {
- var requestData = new Array();
- requestData["ifCode"] = ifCode;
- requestData["appId"] = "52030131"; // || "admin001"
- requestData["signType"] = "MD5"; // || "NONE"
- requestData["encryptType"] = "SM4";
- requestData["reqId"] = requestData["appId"] + "_" + getDate() + "_" + generateMixed(5);
- requestData["timestamp"] = formatTime(new Date());
- requestData["bizContent"] = s4.encryptData_CBC(subdata, sm4Key)
- requestData["sign"] = md5(
- "bizContent=" + requestData["bizContent"] +
- "&signType=" + requestData["signType"] +
- "&encryptType=" + requestData["encryptType"] +
- "×tamp=" + requestData["timestamp"] +
- "&ifCode=" + requestData["ifCode"]
- );
- let endData = arrayToJson(requestData);
- return endData;
- }
|