xuexue321 发表于 2024-4-7 18:07

各位大神,这是怎么生成的sign呢?

var e = require("../@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
    value: !0
}), exports.debounce = f, exports.request = a, exports.uploadFile = i;
var n = e(require("crypto-js")), t = require("./sha256"), o = require("./config"), r = 1;
function a(e, i, u) {
    var f = e, d = i, l = u;
    return new Promise(function(c, g) {
      u || (u = {});
      var p = JSON.parse(JSON.stringify(u));
      p.organid = o.ORGANID, p.tokenType = 1, p.stadiumid = p.stadiumid || "" == p.stadiumid ? p.stadiumid : wx.getStorageSync("stadiumid");
      var y = {
            sign: function(e, r) {
                var a = [], i = 0;
                for (var s in e) a[i] = s, i++;
                var u = a.sort(), f = "";
                for (var d in u) u.hasOwnProperty(d) && -1 === u[d].indexOf("action") && -1 === u[d].indexOf("_noencry") && -1 === u[d].indexOf("_nosign") && (f += u[d] + "=" + e[u[d]] + "&");
                f = r.indexOf("noToken") < 0 ? f + "token=" + wx.getStorageSync("token") + "&appkey=" + o.appkey : f + "appkey=" + o.appkey;
                return f = (0, t.SHA256)(f).toUpperCase(), f = n.default.MD5(f).toString().toUpperCase();
            }(function(e) {
                for (var n in e) "token" !== n && "action" !== n && -1 === n.indexOf("_nosign") && -1 === n.indexOf("_noencry") && ("string" == typeof e[n] || "number" == typeof e[n] || "boolean" == typeof e[n] ? e[n] = s(e[n]) : e[n] = s(JSON.stringify(e[n])));
                return e;
            }(p), i),
            token: wx.getStorageSync("token"),
            "Content-Type": "application/x-www-form-urlencoded"
      };
      wx.request({
            url: o.baseUrl + i,
            method: e,
            header: y,
            data: p,
            success: function(e) {
                if (wx.hideLoading(), e.data.result && "false" !== e.data.result) c(e.data); else if (3 !== e.data.code && 2 !== e.data.code) if (4 === e.data.code) if (r < 3) {
                  r++;
                  var n = wx.getStorageSync("loginInfo"), t = {};
                  t.tokens = n.token, t.userid = n.userid, t.refresh_token = n.refresh_token, t.useriv = o.ivkey,
                  t.mq = !0, t.usermy = o.mftkey, t.userkey = n.username + "shanxi" + n.refresh_token + "taiyuan" + n.random,
                  wx.$api.refreshTokens(t).then(function(e) {
                        r = 1;
                        var n = wx.getStorageSync("loginInfo");
                        n.refresh_token = e.refresh_token, n.token = e.token, wx.setStorageSync("loginInfo", n),
                        wx.setStorageSync("token", e.token), a(f, d, l).then(function(e) {
                            c(e);
                        }).catch(function(e) {
                            wx.removeStorageSync("token"), wx.removeStorageSync("loginInfo"), wx.navigateTo({
                              url: "/pages/login/login"
                            });
                        });
                  }).catch(function(e) {});
                } else wx.removeStorageSync("token"), wx.removeStorageSync("loginInfo"), wx.navigateTo({
                  url: "/pages/login/login"
                }); else wx.showToast({
                  title: e.data.message,
                  icon: "none",
                  duration: 2e3
                }), g(e); else wx.navigateTo({
                  url: "/pages/login/login"
                });
            },
            fail: function(e) {
                wx.hideLoading(), g(e), wx.showToast({
                  title: "服务器错误",
                  icon: "none",
                  duration: 2e3
                });
            }
      });
    });
}
function i(e, n, t) {
    return console.log(n, t, "????????"), new Promise(function(e, r) {
      wx.uploadFile({
            url: o.baseUrl + n,
            header: {
                "Content-Type": "multipart/form-data"
            },
            name: "file",
            filePath: t,
            success: function(n) {
                console.log(n, "result");
                var t = JSON.parse(n.data);
                -1 === t.status ? r(t) : e(t);
            },
            fail: function(e) {
                console.log(e, "error");
                var n = JSON.parse(e.data);
                r(n);
            }
      });
    });
}
function s(e) {
    var t = n.default.enc.Utf8.parse(o.mftkey), r = n.default.enc.Utf8.parse(e);
    return n.default.AES.encrypt(r, t, u).toString();
}
var u = {
    iv: n.default.enc.Utf8.parse(o.ivkey),
    mode: n.default.mode.CBC,
    padding: n.default.pad.Pkcs7
};
function f(e) {
    var n, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 300;
    return function(o) {
      var r = this;
      clearTimeout(n), n = setTimeout(function() {
            e.call(r, o);
      }, t);
    };
}
module.exports = {
    request: a,
    uploadFile: i,
    debounce: f
};
各位大神,这里面有段生成sign的代码,是怎么生成的sign呢?比如说是使用哪些数据来产生的sign?可以帮忙编写个脚本把我的特定数据生成sign吗?

J大神 发表于 2024-4-7 19:02

AES 哥 你去b站找找志远三期 你就会了

xuexue321 发表于 2024-4-7 23:02

我现在知道的是url上的参数是aes加密的 ,sign的数据先sha256再转大写,再md5再转大写?我想知道sign是由哪些数据生成的,哪位大佬可以帮忙写出生成sign的代码吗

夜泉 发表于 2024-4-8 00:09

xuexue321 发表于 2024-4-7 23:02
我现在知道的是url上的参数是aes加密的 ,sign的数据先sha256再转大写,再md5再转大写?我想知道sign是由哪些 ...

要想扣代码,先把javascript学会,学会了后再学vue、es6,差不多就能扣了{:301_1000:}
页: [1]
查看完整版本: 各位大神,这是怎么生成的sign呢?