10 精币
var encrypt = new JSEncrypt();
encrypt.setPublicKey('MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJoYCTBQXVL0JchWm8zD4iiwQi3cgyDB
+1G2ami7GjaIu2vwTXFKN6uqE7/AbGxbpmxFkoPDBweZ2KdmFMWPyQbXM3//cPU1U50jNEzRXPSqMXfVX1VEF57JNe99mdGorK1OzbclGkS5Apd6Ycatd4H6W76XIJBe5msHqcVIWi2wIDAQAB');
var decrypt = new JSEncrypt();
decrypt.setPrivateKey("MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBALGGM6ha94RLWeIkvXUARE5nxFDPPXGfMhpL9QcVRqqr+fotnh3iZThk1kZcKuhgK9ZuKSzro
+D1T0MNu3jDBGw69PJ6beXR7arWLetV/NsYNoUyja28kucxcUeyrvXmSmF5jc1uogyXm8RHiQxgrfPLSxgPjG60u4eY91ECy8IZAgMBAAECgYAu
+bIltJyWt1G7k7lGgqGQlcjPEWfS7ytU5hCapTij5Qoq93NFuSjLuXMx/yWjg/9VqKTgrCIbXw5wUevv0rsSb2u7qdq65anvY/4MTXffkSVjIYpfJBod49+26xjY8fYRXNGI8ygrbZGTD0G6MaBJpO4kgaWi6aG+RVeialInAQJBAOjjsbr
+yKZc9Qt5+Srirb6sbqMPp6f3eZtqrln8tBSK2lxtQKQLRZ4jqxPn627kKvLndy+72es8W/GcwkIf75ECQQDDJAOUrYukXSz65NU2d15BZ4qTMKlefIRRxdeC6y2c
+W8J8/j8SlTtpRVSYaktJzzijGixm6qdrIU2bU8Kh/YJAkBV0YHu3HBoDZ0m632L9hf8SWJDqEMpvCINyVQSSPK7Fye8I25MhPLUgWRLY4z4QhApjm33Iwv8iTOAZzmWUFphAkAs
+R/aJCUKvG6hZBu/ccNHT5WgVpayMABO2EnS4mCgzNvKb2/ytS7dli5Tzi4vOdvOWo3GYRnxPNF2ubp9stgBAkA4OpHEA5AOUSUuiuE3mnYpTkh00uhmrtxOmb7P/OrBBLvVMSMpleBMV8UtnVd9a1SoUa6+DnzcxCTcITm8sNHl");
function sendRequest(path, method, server, param, callback, log) {
if (!param) {
param = {};
}
var async = true;
if (method == "SYNC") {
async = false;
method = "GET";
}
param["_"] = new Date().getTime();
var aesKey = new UUID().toString().substring(0, 16);
var key = CryptoJS.enc.Utf8.parse(aesKey);
var aesParam = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(encodeURIComponent(JSON.stringify(param))), key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
}).toString();
var data = {
ip: "127.0.0.1",
method: method,
server: server,
sign: encrypt.encrypt(aesKey),
param: aesParam,
"_": param["_"]
};
if (log) {
console.log("请求路径:" + path + ",参数:", JSON.stringify(param));
}
return $.ajax(HOST + "/api/interface" + path, {
method: "POST",
data: data,
async: async,
complete: function (xhr) {
var time = xhr.getResponseHeader("Date");
if (time) {
window.now = new Date(time);
}
if (xhr.readyState == 0) {
fittk.close();
return;
}
if (xhr.readyState != 4 || xhr.status != 200) {
fittk.close();
fittk.errorToast("服务器异常 " + xhr.status);
return;
}
var response = xhr.responseJSON;
aesKey = decrypt.decrypt(response.sign);
key = CryptoJS.enc.Utf8.parse(aesKey);
var aesData = CryptoJS.enc.Utf8.stringify(CryptoJS.AES.decrypt(response.data, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
})).toString();
var res = JSON.parse(decodeURIComponent(aesData));
if (log) {
console.log("返回值:", JSON.stringify(res));
}
if (res.code == ERROR) {
top.fittk.close();
top.fittk.errorToast(res.message || "服务器异常");
}
callback(res);
}
});
}
代码中这一段
var data = {
ip: "127.0.0.1",
method: method,
server: server,
sign: encrypt.encrypt(aesKey),
param: aesParam,
"_": param["_"]
};
以下是抓包数据,需sign和param的加解密例程 :
ip=127.0.0.1&method=GET&server=1&sign=hA%2BbaVlFnaExaOpsZUxnjW8SS2mUpKKRgun%2BdHUwTbMI3UH63Qv12DRPJw11RqdYtjRDkAOckAQ4vBd%2Fwp2yqT2s2v48RNdUK4fL5zdkDaSGE7cNXXHda6xHC97mc5R4WnHMYtCwQ7jjwXLcx0kJsF03VyBAQkgPGeVOFHX9Wbc%3D¶m=ch9kqBI%2FsmM3UjWNd%2FVlYeWXAzor4TJRKFe4Yw6aoF%2BBFZmSzMrssMRQ3Zcr9E6IFyFx7k7%2Fln7TOJdCmeTeNSjtMtCq%2F8RXragqPh%2BhuirW8XiWRtoadOxsRQF0tnp5y8V%2FupJJSDGwp%2FXl7GR2RA%2BjreBKa8GvV3DLBY%2FrVKL1pQNvEhZFtoNvHoH7kMO8mcq%2BPqfrGyq0%2BvDqYSQeEkQgLWvhwb51xNtHoBVmZ0PWFjhfVZyu7kYQhjdN7lMzGwzdL1kw7cdWdgrkOoHM53ll9TLjVsCYoG5PWy2QS8yF2k%2BHKT7fMi1FgxtnuawDTpQfKHLnP1LkcdPqWYmcadAQYOgQK2%2FVUfdC8BecnD2MhHpS8z5vhJkXwoNKFu0nUoV600RvtjL1pUGAB9WYaliSTVBnbZL56jJjjJP8HZ%2FjeJBG3O9RncdK6RIGnX3DLNHVERsRtAjYV4%2FLHfAG9UUJjbTj15h%2BH3Den79DqFwgj6QgbcxFVFH5iSP5QaLy&_=1707029290245