苏宁易购 提交订单接口的参数加密和返回解密

参数加密js

var SuAES="object"==typeof exports?exports:"object"==typeof SuAES?SuAES:{};!function(d,g){var m=[],f=[],h=[],u=[],v=[],p=[],S=[],x=[],k=[],y=[];!function(){for(var r=[],t=0;t<256;t++)r[t]=t<128?t<<1:t<<1^283;var n=0,i=0;for(t=0;t<256;t++){var o=i^i<<1^i<<2^i<<3^i<<4;o=o>>>8^255&o^99,m[n]=o;var s=r[f[o]=n],e=r[s],a=r[e],c=257*r[o]^16843008*o;h[n]=c<<24|c>>>8,u[n]=c<<16|c>>>16,v[n]=c<<8|c>>>24,p[n]=c;c=16843009*a^65537*e^257*s^16843008*n;S[o]=c<<24|c>>>8,x[o]=c<<16|c>>>16,k[o]=c<<8|c>>>24,y[o]=c,n?(n=s^r[r[r[a^s]]],i^=r[r[i]]):n=i=1}}();var e=[0,1,2,4,8,16,32,64,128,27,54],b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789()*";function C(r,t){r=this.w=r||[],this.s=t||4*r.length}var r=C.prototype;function o(r,t,n,i,o,s,e,a,c){for(var f=r[t]^n[0],h=r[t+1]^n[1],u=r[t+2]^n[2],v=r[t+3]^n[3],p=4,w=1;w<i;w++){var l=o[f>>>24]^s[h>>>16&255]^e[u>>>8&255]^a[255&v]^n[p++],A=o[h>>>24]^s[u>>>16&255]^e[v>>>8&255]^a[255&f]^n[p++],d=o[u>>>24]^s[v>>>16&255]^e[f>>>8&255]^a[255&h]^n[p++],g=o[v>>>24]^s[f>>>16&255]^e[h>>>8&255]^a[255&u]^n[p++];f=l,h=A,u=d,v=g}l=(c[f>>>24]<<24|c[h>>>16&255]<<16|c[u>>>8&255]<<8|c[255&v])^n[p++],A=(c[h>>>24]<<24|c[u>>>16&255]<<16|c[v>>>8&255]<<8|c[255&f])^n[p++],d=(c[u>>>24]<<24|c[v>>>16&255]<<16|c[f>>>8&255]<<8|c[255&h])^n[p++],g=(c[v>>>24]<<24|c[f>>>16&255]<<16|c[h>>>8&255]<<8|c[255&u])^n[p++];r[t]=l,r[t+1]=A,r[t+2]=d,r[t+3]=g}function E(r){for(var t=unescape(encodeURIComponent(r)),n=t.length,i=[],o=0;o<n;o++)i[o>>>2]|=(255&t.charCodeAt(o))<<24-o%4*8;return new C(i,n)}function j(r,t,n,i){this.b=n.w,this.k=r,this.r=t,this.p=i}function w(r,t){this.xorBlock(r,t),o(r,t,this.k,this.r,h,u,v,p,m),this.b=r.slice(t,t+4)}function B(r,t){var n=r.slice(t,t+4),i=r[t+1];r[t+1]=r[t+3],r[t+3]=i,o(r,t,this.k,this.r,S,x,k,y,f);i=r[t+1];r[t+1]=r[t+3],r[t+3]=i,this.xorBlock(r,t),this.b=n}function M(r,t){var n=t.w,i=t.s,o=4*Math.ceil(i/16),s=Math.min(4*o,i);if(o){for(var e=0;e<o;e+=4)r.p(n,e);var a=n.splice(0,o);t.s-=s}return new C(a,s)}function O(r,t,n){for(var i=[],o=0;o<t;o++)if(o<n)i[o]=r[o];else{var s=i[o-1];o%n?6<n&&o%n==4&&(s=m[s>>>24]<<24|m[s>>>16&255]<<16|m[s>>>8&255]<<8|m[255&s]):(s=m[(s=s<<8|s>>>24)>>>24]<<24|m[s>>>16&255]<<16|m[s>>>8&255]<<8|m[255&s],s^=e[o/n|0]<<24),i[o]=i[o-n]^s}return i}r.concat=function(r){var t=this.w,n=r.w,i=this.s,o=r.s;if(this.clamp(),i%4)for(var s=0;s<o;s++){var e=n[s>>>2]>>>24-s%4*8&255;t[i+s>>>2]|=e<<24-(i+s)%4*8}else if(65535<n.length)for(s=0;s<o;s+=4)t[i+s>>>2]=n[s>>>2];else t.push.apply(t,n);return this.s+=o,this},r.clamp=function(){this.w[this.s>>>2]&=4294967295<<32-this.s%4*8,this.w.length=Math.ceil(this.s/4)},j.prototype.xorBlock=function(r,t){for(var n=0;n<4;n++)r[t+n]^=this.b[n]},SuAES.encrypt=function(r,t,n){t=E(t||d),r=E(r);var i=new C,o=t.w,s=t.s/4,e=6+s,a=O(o,4*(1+e),s);i.concat(r);for(var c=16-i.s%16,f=c<<24|c<<16|c<<8|c,h=[],u=0;u<c;u+=4)h.push(f);return i.concat(new C(h,c)),function(r){var t=r.w,n=r.s,i=b;r.clamp();for(var o=[],s=0;s<n;s+=3)for(var e=(t[s>>>2]>>>24-s%4*8&255)<<16|(t[s+1>>>2]>>>24-(s+1)%4*8&255)<<8|t[s+2>>>2]>>>24-(s+2)%4*8&255,a=0;a<4&&s+.75*a<n;a++)o.push(i.charAt(e>>>6*(3-a)&63));var c=i.charAt(64);if(c)for(;o.length%4;)o.push(c);return o.join("")}(M(new j(a,e,E(n||g),w),i))},SuAES.decrypt=function(r,t,n){t=E(t||d);var i=new C,o=function(r){var t=r.length,n=b,i=n.charAt(64);if(i){var o=r.indexOf(i);-1!=o&&(t=o)}for(var s=[],e=0,a=0;a<t;a++)if(a%4){var c=n.indexOf(r.charAt(a-1))<<a%4*2,f=n.indexOf(r.charAt(a))>>>6-a%4*2;s[e>>>2]|=(c|f)<<24-e%4*8,e++}return new C(s,e)}(r),s=o.w;1398893684==s[0]&&1701076831==s[1]&&(s.splice(0,4),o.s-=16),i.concat(o);for(var e=t.w,a=t.s/4,c=6+a,f=4*(1+c),h=O(e,f,a),u=[],v=0;v<f;v++){var p=f-v;if(v%4)var w=h[p];else w=h[p-4];u[v]=v<4||p<=4?w:S[m[w>>>24]]^x[m[w>>>16&255]]^k[m[w>>>8&255]]^y[m[255&w]]}var l=M(new j(u,c,E(n||g),B),i),A=255&l.w[l.s-1>>>2];return l.s-=A,function(r){for(var t=r.w,n=r.s,i=[],o=0;o<n;o++){var s=t[o>>>2]>>>24-o%4*8&255;i.push(String.fromCharCode(s))}return decodeURIComponent(escape(i.join("")))}(l)}}("www.cnsuning.com","moc.gninusnc.www");

function serializeDate(date) { // eslint-disable-line func-name-matching
        return toISO.call(date);
}


var hexTable = (function () {
    var array = [];
    for (var i = 0; i < 256; ++i) {
        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());
    }

    return array;
}());


function encoder01(str) {
    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.
    // It has been adapted here for stricter adherence to RFC 3986
    if (str.length === 0) {
        return str;
    }

    var string = typeof str === 'string' ? str : String(str);

    var out = '';
    for (var i = 0; i < string.length; ++i) {
        var c = string.charCodeAt(i);

        if (
            c === 0x2D || // -
            c === 0x2E || // .
            c === 0x5F || // _
            c === 0x7E || // ~
            (c >= 0x30 && c <= 0x39) || // 0-9
            (c >= 0x41 && c <= 0x5A) || // a-z
            (c >= 0x61 && c <= 0x7A) // A-Z
        ) {
            out += string.charAt(i);
            continue;
        }

        if (c < 0x80) {
            out = out + hexTable[c];
            continue;
        }

        if (c < 0x800) {
            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);
            continue;
        }

        if (c < 0xD800 || c >= 0xE000) {
            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);
            continue;
        }

        i += 1;
        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));
        out += hexTable[0xF0 | (c >> 18)] + hexTable[0x80 | ((c >> 12) & 0x3F)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]; // eslint-disable-line max-len
    }

    return out;
}

var defaults={};

defaults.delimiter="&"
defaults.encode=true
defaults.encoder=encoder01 
defaults.encodeValuesOnly=false
defaults.serializeDate=serializeDate
defaults.skipNulls=false
defaults.strictNullHandling=false



function RFC1738 (value) {
    return replace.call(value, percentTwenties, '+');
}

function RFC3986(value) {
    return value;
}
		
var formats={};

formats.default="RFC3986"
formats.formatters={"RFC1738":RFC1738,"RFC3986":RFC3986}
formats.RFC1738="RFC1738"
formats.RFC3986="RFC3986"



function _qs2_default_stringify (object, opts) {
    var obj = object;
    var options = opts || {};

    if (options.encoder !== null && options.encoder !== undefined && typeof options.encoder !== 'function') {
        throw new TypeError('Encoder has to be a function.');
    }

    var delimiter = typeof options.delimiter === 'undefined' ? defaults.delimiter : options.delimiter;
    var strictNullHandling = typeof options.strictNullHandling === 'boolean' ? options.strictNullHandling : defaults.strictNullHandling;
    var skipNulls = typeof options.skipNulls === 'boolean' ? options.skipNulls : defaults.skipNulls;
    var encode = typeof options.encode === 'boolean' ? options.encode : defaults.encode;
    var encoder = typeof options.encoder === 'function' ? options.encoder : defaults.encoder;
    var sort = typeof options.sort === 'function' ? options.sort : null;
    var allowDots = typeof options.allowDots === 'undefined' ? false : options.allowDots;
    var serializeDate = typeof options.serializeDate === 'function' ? options.serializeDate : defaults.serializeDate;
    var encodeValuesOnly = typeof options.encodeValuesOnly === 'boolean' ? options.encodeValuesOnly : defaults.encodeValuesOnly;
    if (typeof options.format === 'undefined') {
        options.format = formats.default;
    } else if (!Object.prototype.hasOwnProperty.call(formats.formatters, options.format)) {
        throw new TypeError('Unknown format option provided.');
    }
    var formatter = formats.formatters[options.format];
    var objKeys;
    var filter;

    if (typeof options.filter === 'function') {
        filter = options.filter;
        obj = filter('', obj);
    } else if (Array.isArray(options.filter)) {
        filter = options.filter;
        objKeys = filter;
    }

    var keys = [];

    if (typeof obj !== 'object' || obj === null) {
        return '';
    }

    var arrayFormat;
    if (options.arrayFormat in arrayPrefixGenerators) {
        arrayFormat = options.arrayFormat;
    } else if ('indices' in options) {
        arrayFormat = options.indices ? 'indices' : 'repeat';
    } else {
        arrayFormat = 'indices';
    }

    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];

    if (!objKeys) {
        objKeys = Object.keys(obj);
    }

    if (sort) {
        objKeys.sort(sort);
    }

    for (var i = 0; i < objKeys.length; ++i) {
        var key = objKeys[i];

        if (skipNulls && obj[key] === null) {
            continue;
        }

        keys = keys.concat(stringify(
            obj[key],
            key,
            generateArrayPrefix,
            strictNullHandling,
            skipNulls,
            encode ? encoder : null,
            filter,
            sort,
            allowDots,
            serializeDate,
            formatter,
            encodeValuesOnly
        ));
    }

    return keys.join(delimiter);
};



function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

function log(title, arrs) {
  console.group('%c ' + title, 'color:#0f0;');
  arrs.forEach(function (name) {
    console.log(name);
  });
  console.groupEnd();
}

//json参数转为url参数
//function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }

var stringify = function stringify( // eslint-disable-line func-name-matching
    object,
    prefix,
    generateArrayPrefix,
    strictNullHandling,
    skipNulls,
    encoder,
    filter,
    sort,
    allowDots,
    serializeDate,
    formatter,
    encodeValuesOnly
) {
    var obj = object;
    if (typeof filter === 'function') {
        obj = filter(prefix, obj);
    } else if (obj instanceof Date) {
        obj = serializeDate(obj);
    } else if (obj === null) {
        if (strictNullHandling) {
            return encoder && !encodeValuesOnly ? encoder(prefix) : prefix;
        }

        obj = '';
    }

    if (typeof obj === 'string' || typeof obj === 'number' || typeof obj === 'boolean' || utils.isBuffer(obj)) {
        if (encoder) {
            var keyValue = encodeValuesOnly ? prefix : encoder(prefix);
            return [formatter(keyValue) + '=' + formatter(encoder(obj))];
        }
        return [formatter(prefix) + '=' + formatter(String(obj))];
    }

    var values = [];

    if (typeof obj === 'undefined') {
        return values;
    }

    var objKeys;
    if (Array.isArray(filter)) {
        objKeys = filter;
    } else {
        var keys = Object.keys(obj);
        objKeys = sort ? keys.sort(sort) : keys;
    }

    for (var i = 0; i < objKeys.length; ++i) {
        var key = objKeys[i];

        if (skipNulls && obj[key] === null) {
            continue;
        }

        if (Array.isArray(obj)) {
            values = values.concat(stringify(
                obj[key],
                generateArrayPrefix(prefix, key),
                generateArrayPrefix,
                strictNullHandling,
                skipNulls,
                encoder,
                filter,
                sort,
                allowDots,
                serializeDate,
                formatter,
                encodeValuesOnly
            ));
        } else {
            values = values.concat(stringify(
                obj[key],
                prefix + (allowDots ? '.' + key : '[' + key + ']'),
                generateArrayPrefix,
                strictNullHandling,
                skipNulls,
                encoder,
                filter,
                sort,
                allowDots,
                serializeDate,
                formatter,
                encodeValuesOnly
            ));
        }
    }

    return values;
};

var arrayPrefixGenerators = {
    brackets: function brackets(prefix) { // eslint-disable-line func-name-matching
        return prefix + '[]';
    },
    indices: function indices(prefix, key) { // eslint-disable-line func-name-matching
        return prefix + '[' + key + ']';
    },
    repeat: function repeat(prefix) { // eslint-disable-line func-name-matching
        return prefix;
    }
};


function eNcrypt(data, isEncry) {
  if (isEncry == '0') {
    var _x_req_block_ = SuAES.encrypt(_qs2.default.stringify(data));
    log('校验(0)', [data, SuAES.decrypt(_x_req_block_), _qs2.default.stringify(data) == SuAES.decrypt(_x_req_block_)]);
    return _defineProperty({
      _x_req_block_: _x_req_block_
    }, '_x_resp_flag_', '0');
  }
  if (isEncry == '1') {
    return _extends({}, data, { _x_resp_flag_: '2' });
  }
  if (isEncry == '2') {
    var str = _qs2_default_stringify(data);
    var _x_req_block_2 = SuAES.encrypt(str);
    log('校验(2)', [data, SuAES.decrypt(_x_req_block_2), str, str == SuAES.decrypt(_x_req_block_2)]);
    return _defineProperty({
      _x_req_block_: _x_req_block_2 }, '_x_resp_flag_', '2');
  }
  if (isEncry == '3') {
    var _x_req_block_3 = SuAES.encrypt(_qs2.default.stringify(data));
    log('校验(0)', [data, SuAES.decrypt(_x_req_block_3), _qs2.default.stringify(data) == SuAES.decrypt(_x_req_block_3)]);
    return _defineProperty({
      _x_req_block_: _x_req_block_3
    }, '_x_resp_flag_', '3');
  }
}

console.log(eNcrypt(JSON.parse("{\"terminalVersion\":\"wap|06\",\"cart2No\":\"121320107995002745659862\",\"showGift\":1,\"supportMobileCheck\":1,\"signature\":\"\",\"dfpToken\":\"TH2R3417162008ed7K7py92e9\",\"detect\":\"383D98F11BF103EC7A0E138E61585485VjE4MDkwNlxaXTAqMCsvJCxaKi8kK11aWyRYWSxYJCgtWSdcKigrL1laLisuVSksJy4oVUk_OWpdKGUoRUZvL1UnUhkqWllcJy8sKCQpWiwtJCsvWCwkMCxYLSQoXV0tJyksLSovWisZIygsLy0sJysvLScuKisjZWxjYyNlbGNjVFUoUhlEZnFgY2NYJiwlJxcfTmBlW2ZuahdFSxcoJyUnMhdOYGUtKzIXby0rIBc4Z2djXE5cWUJgayYsKi4lKi0XH0I_S0RDIxdjYGJcFz5cWmJmIBc6X2lmZFwmLyclJyUqMC8uJSgnLRdKWF1YaWAmLCouJSotGSMZTmBlKikZIysvJyMZcV8kOkUZVFUpUicjJyMtKiojKCkvLCMoMCknIygnLycjKDApJyMoJysnVFUqUhk6X2lmZFwXRzs9F0djbF5gZRkjGTpfaWZkXBdHOz0XTWBcblxpGVRVLVIZX2trZ2oxJiZbXRkjJCgsLSouKDAnKCdUVStSVFUsUicjKCMwKiMpLiMqVFUvUhlfa2tnajEmJmpfZmdnYGVeJWpsZWBlXiVaZmQmZmlbXGklW2Y2WlhpaylFZjQoKSgqKScoJy4wMCwsKjAtKC0sLi4qLSkZIxlfa2tnajEmJmdpZltsWmslamxlYGVeJVpmZCYnJy4nKCsvLSsnJicnJycnJycoKC4vJy4rKi4tLyVfa2RjNmppWjRxamhWKCpiaFZpXFpnW3BxamhWKCQsVmdWJycuJygrLy0rGSMuIzAnKikoLCgtK1RVKCdSKDAsKCMoIystIycjKCgsLC4nLCojLyopIy8oLCMpLiwjLCgsVFUoJ1IoMC0uIygjKy4jJyMoKCwsLicsKiMvKy0jLygpIykvMCMsKClUVSgnUigwLyojKCMrLyMnIygoLCwuJywqIy8uKCMvJy8jKigrIywnL1RVKCdSKDAwMCMoIyswIycjJCgqKS4sMCgoLjAjMCkqIy8nKCMqLS0jLCcoVFUoJ1IpJygsIygjLCcjJyMoKCwsLTArJyMoJycrIy4wKyMrKy4jKzArVFUoJ1IpJyoqIygjLCgjJyMkKCsrLS0tKS4wLCMoJy8uIy4vLyMsKicjKy8vVFUoJ1IpJysvIygjLCkjJyMkKCsoLigqKictLSMoKC0sIy4vLyMtJy8jKy8vVA==\",\"splitFlag\":\"01\",\"retailFormat\":\"\",\"publishDate\":\"20190821\",\"channelType\":\"03\",\"orderMemoJson\":\"[]\",\"specDesc\":\"[]\",\"pageKind\":\"01\"}"),"2"))

提交订单接口

Unirest.setTimeouts(0, 0);
HttpResponse<String> response = Unirest.post("https://shopping.suning.com/wap/cart2/private/submitOrderForWap.do")
  .header("Connection", "keep-alive")
  .header("Accept", "application/json, text/plain, */*")
  .header("Sec-Fetch-Dest", "empty")
  .header("User-Agent", "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Mobile Safari/537.36")
  .header("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8")
  .header("Origin", "https://shopping.suning.com")
  .header("Sec-Fetch-Site", "same-origin")
  .header("Sec-Fetch-Mode", "cors")
  .header("Referer", "https://shopping.suning.com/project/cart/cart2.html?1=1&cart2No=121320107995002745659862&cartType=mtis&pagesrc=https%3A%2F%2Fm.suning.com%2Fproduct%2F0070207917%2F000000011093740509.html")
  .header("Accept-Language", "zh-CN,zh;q=0.9")
  .header("Cookie", "custno=7113871039;authId=siAE0036C0BC301ABDE036CE512EBF30AE;")
  .header("Content-Type", "text/plain")
  .header("Cookie", "tradeMA=248; _device_session_id=p_9993d1fe-2639-4a2e-a749-e26575188c2b; route=80e7f831c71f2a9fb49ef170cf5d2a80")
  .body("_x_req_block_=7mIrtV8WyhE0HvFiLvgaTry6id(UDtc)GZB97fL(q(JrhEsfFaz08tmji6lHiQUfXC6rh378ObTB3EVsMtByF(TT(G2H33bDX0c9ZPVNi46GlAx)euVDwbtA(tLd0JcAXb6ooeI7o4pgb4zvsfjEfZDg2q77EZfw)(xuKniwFTrOVsUZB79seRTY41hKMFY4dNZmEeGayRWM5o(dTworvBHpVDJvCeSVtnUeUDQZ5R2Vk7KQZIwTSq0XBIf2biUpFUViT5Bh1xnUAuALk6e5xghsnLIcti(UeZqLeJb0VRbnnvbJAg8T(KiksyaOAwM9YhH573TtJgaVu2utLy9FAnSDNXYnq)oQt)VKNIY26fo52u8XbMsi8Da0)OHqTMoDeyuvEF7(ZHYOC8wXxVDIqE5te(Im7Y1(PRiS1d2YD3bMBUI(my2gmYBcl)AgnepPwVubqgw8K54kDvBQoT5zQd0tE32sDNpzFF7mpOLDL)RzYSQjHWKSFXRtYjt7Ku26ufzkt9afShQKuIOcCm7j8)(6Vj5(jtsRNuNPn6BJno)NKv2wmKmzz8W1uBiwonAbj5swtZot4HGOPi(NhZ6Z19SOKG9914A)LMeWJib2gkWx5CnDkA1Xb7MTRTaC6pbGibKob57wHrL8MPoS9DJ311f((G8oTOoj4x8NcdRvtC(VMd7hCjc5rDEnaXGmsnk2RgEkOaDRhnACpESrrru8VdXp(0(eIBbRauQRlE3DUVBTpt9N01N7IE3WFRW)jdpymGbcZ47wnqlpp2WzkdY9cFesNj4ScWswWPkEXo5CTnFiNEaOFN5m6Oxj0lsq0YfAooXrVMZ5iR30ea0wRMCRFvUKXJ1y7elTRE4CunQ2PEAFGygws)00Wtax)zF(iIHsEmH6932BufeNvkk3IsbkgwEimwmkyfXK3Vpy)CxmchwaHsuJ9fn)nOSJKgAWrEwLstj6cbjoA5P9f5g0zbQF2WJeLkkD9k(LyMDOwt8OWe2M3d7Pe0TnMgEAGSFNhEuB)qMsmstsYiJh1ofMNO9J2BbJih9ugXusBFCFIkJw(WOI2LR1X8srtmcNytLnnqDU9(rMFO0OVmqC0i3SAFsus2VT(3UkV7yD2bLXmCbgzlRmlYpeJBInLkRVukIAbon)EkOVS)eplB0RAQGwGnhN(IbTcAfyxsmGPJFwOibHfmCmmUapLjJ(zhzrWL6DamLp59dusw7OybALEEbUaKvoDgwor87hEKX2YwltJ0OQpi8V5XeAMPfDBBfzUtSv1acasvj7jiBP4oth)VqfKzjf9SEvc708drwzeEa5SYKPi)E0DcITn(tW4eH5ae3E4kKHGNc3LPeHBZetC6SfRgZT(BepEVN2TZhX72WY4d9c57(HM8(fAifSDyvWQc)eJmNfiG2cbovK4uxVy7Xf)AhnlgDOxag5UdX1w8Ixro2GIPVdSsS9cXxpWKB3sNTNhWPjJx2A9TClRLiFFwEJuh(HcdArV5CuxVQr0lUmrslVqTsj0RjLSi0r5Xxch2UPfPKVLP0gHCzmrIFQSTtzivLL19ckN9vXqa22XeUQtnbuYyqudUL(YTKDQeDFD4)kkORMbJRLyKZcMx1nnGlGI4)WmqGejQ5pblEgSYtC3fhCPAMfNZdYKzRNzyk)fIeCnbaAAyKw73IRqVgz5VZguyhL6Dx9inaQ)(F6oml6TiZUoS2WSlHCnM2xNJ(mbGXKqlwwRcASBcmOhzs)67c5AGv9Ejtx390bjFQICkRsl88aAy3orO4Fw(ZwYH9muv26NxUPmfAUqKH0729njGvuwwMbekIYx7ChbnAYaQHi4QoFeoUIsK0U5v2dYWped0azX)Zh2rsuLzugD1eckZVrcbSb6H83oyVctvgMNjhfRlq3Tb96G5rgF6ku5YEkC(MptOx8dFh5e5anrhQPDJmJb(9YbhmeoNRTKPpP8IrtoIlZO6zwN)CKIkY4h3mwePlWhU09&_x_resp_flag_=2")
  .asString();

返回参数解密

JSON.parse(SuAES.decrypt("CF4saUXIx5bymwvUbLrmkYZrqIVxEM(WlzdeM2zWtBv8OpVKYcEBqPLRPam3X(RKaTw9GN)CxC3sHSnEqFjiUudff0Yx8X2WlPHGlm6BuradwgUb8HqoqzPXkgznuescPtVYxznHoAXq(bJ0bTEq4OdsdyIVA26LUjGa5yo0nQv2Ws67l6O11hvRRtOMU1gS4KE9CGGg0E6kEQnAQe)GKo(vnhY4d1G1nNtysXvVQOFGR8ENphlN7akSVQxE6)O6Azpz9gK72gVAs5QU9FyDjaDbIU3BC2WjMIFTZzX06MZM5cKmMR3vKrhLRmc04Tha1EGbKH0NpvTbWGWlccUdH3oP7(ezahY4YLVw2rOEqo4XaFbit2LDTDUpkfyoLuu)c3h(d8Fi5AWDhNL)HsubRIwa4UyHNQmSlESzWqiPTeOweh3raJhw)TEsK9ui7tmvwvz0wybaBzIIJOhWW5pMC6qL8zNe6R9B0ukE0Yjd283pz5c8YLh)CrRJ5Xcn3Qd7SVcA(kPxsenbAfm6vROykwFkdhSCV4YDm11tkQa1(Oko9jwCPZjCrRzNJxsEkP3w81bbFMAN9zGwi)6PP4KeXh5HgrQnHPw9Zyq4BVGPMXsTnFJxVGQe)(VdNnAQRiBlf3txL6BbiLMo0WkYoAyzQYj7PJNw8dE(pW8E0zc0Z8ZBrTHcaN0QtSoYKKINK4yX"))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
解密接口返回加密数据,你需要知道加密算法和密钥。如果你不知道加密算法和密钥,那么是无法解密的。 如果你知道加密算法和密钥,那么可以使用相应的解密算法进行解密。常见的对称加密算法有 AES、DES、3DES 等,可以通过对应的库或工具进行解密。在 Vue 中,可以借助 axios 拦截器,在请求返回时进行解密操作。 以下是一个示例代码: ```js import axios from 'axios' import CryptoJS from 'crypto-js' // 创建 axios 实例 const service = axios.create({ baseURL: process.env.BASE_API, // 接口的基础路径 timeout: 5000 // 请求超时时间 }) // 请求拦截器 service.interceptors.request.use( config => { // 在请求发送之前,对请求数据进行加密 const data = config.data if (data && data.encrypted) { const key = CryptoJS.enc.Utf8.parse('1234567890123456') // 密钥 const encryptedData = CryptoJS.enc.Base64.parse(data.encrypted) const decryptedData = CryptoJS.AES.decrypt({ ciphertext: encryptedData }, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) config.data = JSON.parse(decryptedData.toString(CryptoJS.enc.Utf8)) } return config }, error => { Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( response => { // 在响应返回之后,对响应数据进行解密 const data = response.data if (data && data.encrypted) { const key = CryptoJS.enc.Utf8.parse('1234567890123456') // 密钥 const encryptedData = CryptoJS.enc.Base64.parse(data.encrypted) const decryptedData = CryptoJS.AES.decrypt({ ciphertext: encryptedData }, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) response.data = JSON.parse(decryptedData.toString(CryptoJS.enc.Utf8)) } return response }, error => { Promise.reject(error) } ) export default service ``` 在这个示例代码中,我们使用了 CryptoJS 库进行解密操作。在请求拦截器中,对请求数据进行解密,在响应拦截器中,对响应数据进行解密。在解密时,需要使用相同的密钥和加密算法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值