• 利用谷歌浏览器断点调试js反向解析,解密


    目标网站:https://www.aqistudy.cn/html/city_detail.html

    点击按钮才会去后台请求数据,

    第一步:将click打开,

     第二步:找个后台请求数据的url   https://www.aqistudy.cn/apinew/aqistudyapi.php

    第三步:断点调试,找到找到加密和解密的文件

       1 function Base64() {
       2     _2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
       3         this.encode = function (a) {
       4             var c, d, e, f, g, h, i, b = "",
       5                 j = 0;
       6             for (a = _29(a); j < a.length;) c = a.charCodeAt(j++),
       7                 d = a.charCodeAt(j++),
       8                 e = a.charCodeAt(j++),
       9                 f = c >> 2,
      10                 g = (3 & c) << 4 | d >> 4,
      11                 h = (15 & d) << 2 | e >> 6,
      12                 i = 63 & e,
      13                 isNaN(d) ? h = i = 64 : isNaN(e) && (i = 64),
      14                 b = b + _2.charAt(f) + _2.charAt(g) + _2.charAt(h) + _2.charAt(i);
      15             return b
      16         },
      17         this.decode = function (a) {
      18             var c, d, e, f, g, h, i, b = "",
      19                 j = 0;
      20             for (a = a.replace(/[^A-Za-z0-9+/=]/g, ""); j < a.length;) f = _2.indexOf(a.charAt(j++)),
      21                 g = _2.indexOf(a.charAt(j++)),
      22                 h = _2.indexOf(a.charAt(j++)),
      23                 i = _2.indexOf(a.charAt(j++)),
      24                 c = f << 2 | g >> 4,
      25                 d = (15 & g) << 4 | h >> 2,
      26                 e = (3 & h) << 6 | i,
      27                 b += String.fromCharCode(c),
      28             64 != h && (b += String.fromCharCode(d)),
      29             64 != i && (b += String.fromCharCode(e));
      30             return b = _27(b)
      31         },
      32         _29 = function (a) {
      33             var b, c, d;
      34             for (a = a.replace(/
    /g, "
    "), b = "", c = 0; c < a.length; c++) d = a.charCodeAt(c),
      35                 128 > d ? b += String.fromCharCode(d) : d > 127 && 2048 > d ? (b += String.fromCharCode(192 | d >> 6), b += String.fromCharCode(128 | 63 & d)) : (b += String.fromCharCode(224 | d >> 12), b += String.fromCharCode(128 | 63 & d >> 6), b += String.fromCharCode(128 | 63 & d));
      36             return b
      37         },
      38         _27 = function (a) {
      39             for (var b = "", c = 0, d = c1 = c2 = 0; c < a.length;) d = a.charCodeAt(c),
      40                 128 > d ? (b += String.fromCharCode(d), c++) : d > 191 && 224 > d ? (c2 = a.charCodeAt(c + 1), b += String.fromCharCode((31 & d) << 6 | 63 & c2), c += 2) : (c2 = a.charCodeAt(c + 1), c3 = a.charCodeAt(c + 2), b += String.fromCharCode((15 & d) << 12 | (63 & c2) << 6 | 63 & c3), c += 3);
      41             return b
      42         }
      43 }
      44 function hex_md5(a) {
      45     return binl2hex(core_md5(str2binl(a), a.length * chrsz))
      46 }
      47 function b64_md5(a) {
      48     return binl2b64(core_md5(str2binl(a), a.length * chrsz))
      49 }
      50 function str_md5(a) {
      51     return binl2str(core_md5(str2binl(a), a.length * chrsz))
      52 }
      53 function hex_hmac_md5(a, b) {
      54     return binl2hex(core_hmac_md5(a, b))
      55 }
      56 function b64_hmac_md5(a, b) {
      57     return binl2b64(core_hmac_md5(a, b))
      58 }
      59 function str_hmac_md5(a, b) {
      60     return binl2str(core_hmac_md5(a, b))
      61 }
      62 function md5_vm_test() {
      63     return "900150983cd24fb0d6963f7d28e17f72" == hex_md5("abc")
      64 }
      65 function core_md5(a, b) {
      66     var c, d, e, f, g, h, i, j, k;
      67     for (a[b >> 5] |= 128 << b % 32, a[(b + 64 >>> 9 << 4) + 14] = b, c = 1732584193, d = -271733879, e = -1732584194, f = 271733878, g = 0; g < a.length; g += 16) h = c,
      68         i = d,
      69         j = e,
      70         k = f,
      71         c = md5_ff(c, d, e, f, a[g + 0], 7, -680876936),
      72         f = md5_ff(f, c, d, e, a[g + 1], 12, -389564586),
      73         e = md5_ff(e, f, c, d, a[g + 2], 17, 606105819),
      74         d = md5_ff(d, e, f, c, a[g + 3], 22, -1044525330),
      75         c = md5_ff(c, d, e, f, a[g + 4], 7, -176418897),
      76         f = md5_ff(f, c, d, e, a[g + 5], 12, 1200080426),
      77         e = md5_ff(e, f, c, d, a[g + 6], 17, -1473231341),
      78         d = md5_ff(d, e, f, c, a[g + 7], 22, -45705983),
      79         c = md5_ff(c, d, e, f, a[g + 8], 7, 1770035416),
      80         f = md5_ff(f, c, d, e, a[g + 9], 12, -1958414417),
      81         e = md5_ff(e, f, c, d, a[g + 10], 17, -42063),
      82         d = md5_ff(d, e, f, c, a[g + 11], 22, -1990404162),
      83         c = md5_ff(c, d, e, f, a[g + 12], 7, 1804603682),
      84         f = md5_ff(f, c, d, e, a[g + 13], 12, -40341101),
      85         e = md5_ff(e, f, c, d, a[g + 14], 17, -1502002290),
      86         d = md5_ff(d, e, f, c, a[g + 15], 22, 1236535329),
      87         c = md5_gg(c, d, e, f, a[g + 1], 5, -165796510),
      88         f = md5_gg(f, c, d, e, a[g + 6], 9, -1069501632),
      89         e = md5_gg(e, f, c, d, a[g + 11], 14, 643717713),
      90         d = md5_gg(d, e, f, c, a[g + 0], 20, -373897302),
      91         c = md5_gg(c, d, e, f, a[g + 5], 5, -701558691),
      92         f = md5_gg(f, c, d, e, a[g + 10], 9, 38016083),
      93         e = md5_gg(e, f, c, d, a[g + 15], 14, -660478335),
      94         d = md5_gg(d, e, f, c, a[g + 4], 20, -405537848),
      95         c = md5_gg(c, d, e, f, a[g + 9], 5, 568446438),
      96         f = md5_gg(f, c, d, e, a[g + 14], 9, -1019803690),
      97         e = md5_gg(e, f, c, d, a[g + 3], 14, -187363961),
      98         d = md5_gg(d, e, f, c, a[g + 8], 20, 1163531501),
      99         c = md5_gg(c, d, e, f, a[g + 13], 5, -1444681467),
     100         f = md5_gg(f, c, d, e, a[g + 2], 9, -51403784),
     101         e = md5_gg(e, f, c, d, a[g + 7], 14, 1735328473),
     102         d = md5_gg(d, e, f, c, a[g + 12], 20, -1926607734),
     103         c = md5_hh(c, d, e, f, a[g + 5], 4, -378558),
     104         f = md5_hh(f, c, d, e, a[g + 8], 11, -2022574463),
     105         e = md5_hh(e, f, c, d, a[g + 11], 16, 1839030562),
     106         d = md5_hh(d, e, f, c, a[g + 14], 23, -35309556),
     107         c = md5_hh(c, d, e, f, a[g + 1], 4, -1530992060),
     108         f = md5_hh(f, c, d, e, a[g + 4], 11, 1272893353),
     109         e = md5_hh(e, f, c, d, a[g + 7], 16, -155497632),
     110         d = md5_hh(d, e, f, c, a[g + 10], 23, -1094730640),
     111         c = md5_hh(c, d, e, f, a[g + 13], 4, 681279174),
     112         f = md5_hh(f, c, d, e, a[g + 0], 11, -358537222),
     113         e = md5_hh(e, f, c, d, a[g + 3], 16, -722521979),
     114         d = md5_hh(d, e, f, c, a[g + 6], 23, 76029189),
     115         c = md5_hh(c, d, e, f, a[g + 9], 4, -640364487),
     116         f = md5_hh(f, c, d, e, a[g + 12], 11, -421815835),
     117         e = md5_hh(e, f, c, d, a[g + 15], 16, 530742520),
     118         d = md5_hh(d, e, f, c, a[g + 2], 23, -995338651),
     119         c = md5_ii(c, d, e, f, a[g + 0], 6, -198630844),
     120         f = md5_ii(f, c, d, e, a[g + 7], 10, 1126891415),
     121         e = md5_ii(e, f, c, d, a[g + 14], 15, -1416354905),
     122         d = md5_ii(d, e, f, c, a[g + 5], 21, -57434055),
     123         c = md5_ii(c, d, e, f, a[g + 12], 6, 1700485571),
     124         f = md5_ii(f, c, d, e, a[g + 3], 10, -1894986606),
     125         e = md5_ii(e, f, c, d, a[g + 10], 15, -1051523),
     126         d = md5_ii(d, e, f, c, a[g + 1], 21, -2054922799),
     127         c = md5_ii(c, d, e, f, a[g + 8], 6, 1873313359),
     128         f = md5_ii(f, c, d, e, a[g + 15], 10, -30611744),
     129         e = md5_ii(e, f, c, d, a[g + 6], 15, -1560198380),
     130         d = md5_ii(d, e, f, c, a[g + 13], 21, 1309151649),
     131         c = md5_ii(c, d, e, f, a[g + 4], 6, -145523070),
     132         f = md5_ii(f, c, d, e, a[g + 11], 10, -1120210379),
     133         e = md5_ii(e, f, c, d, a[g + 2], 15, 718787259),
     134         d = md5_ii(d, e, f, c, a[g + 9], 21, -343485551),
     135         c = safe_add(c, h),
     136         d = safe_add(d, i),
     137         e = safe_add(e, j),
     138         f = safe_add(f, k);
     139     return Array(c, d, e, f)
     140 }
     141 function md5_cmn(a, b, c, d, e, f) {
     142     return safe_add(bit_rol(safe_add(safe_add(b, a), safe_add(d, f)), e), c)
     143 }
     144 function md5_ff(a, b, c, d, e, f, g) {
     145     return md5_cmn(b & c | ~b & d, a, b, e, f, g)
     146 }
     147 function md5_gg(a, b, c, d, e, f, g) {
     148     return md5_cmn(b & d | c & ~d, a, b, e, f, g)
     149 }
     150 function md5_hh(a, b, c, d, e, f, g) {
     151     return md5_cmn(b ^ c ^ d, a, b, e, f, g)
     152 }
     153 function md5_ii(a, b, c, d, e, f, g) {
     154     return md5_cmn(c ^ (b | ~d), a, b, e, f, g)
     155 }
     156 function core_hmac_md5(a, b) {
     157     var d, e, f, g, c = str2binl(a);
     158     for (c.length > 16 && (c = core_md5(c, a.length * chrsz)), d = Array(16), e = Array(16), f = 0; 16 > f; f++) d[f] = 909522486 ^ c[f],
     159         e[f] = 1549556828 ^ c[f];
     160     return g = core_md5(d.concat(str2binl(b)), 512 + b.length * chrsz),
     161         core_md5(e.concat(g), 640)
     162 }
     163 function safe_add(a, b) {
     164     var c = (65535 & a) + (65535 & b),
     165         d = (a >> 16) + (b >> 16) + (c >> 16);
     166     return d << 16 | 65535 & c
     167 }
     168 function bit_rol(a, b) {
     169     return a << b | a >>> 32 - b
     170 }
     171 function str2binl(a) {
     172     var d, b = Array(),
     173         c = (1 << chrsz) - 1;
     174     for (d = 0; d < a.length * chrsz; d += chrsz) b[d >> 5] |= (a.charCodeAt(d / chrsz) & c) << d % 32;
     175     return b
     176 }
     177 function binl2str(a) {
     178     var d, b = "",
     179         c = (1 << chrsz) - 1;
     180     for (d = 0; d < 32 * a.length; d += chrsz) b += String.fromCharCode(a[d >> 5] >>> d % 32 & c);
     181     return b
     182 }
     183 function binl2hex(a) {
     184     var d, b = hexcase ? "0123456789ABCDEF" : "0123456789abcdef",
     185         c = "";
     186     for (d = 0; d < 4 * a.length; d++) c += b.charAt(15 & a[d >> 2] >> 8 * (d % 4) + 4) + b.charAt(15 & a[d >> 2] >> 8 * (d % 4));
     187     return c
     188 }
     189 function binl2b64(a) {
     190     var d, e, f, b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
     191         c = "";
     192     for (d = 0; d < 4 * a.length; d += 3) for (e = (255 & a[d >> 2] >> 8 * (d % 4)) << 16 | (255 & a[d + 1 >> 2] >> 8 * ((d + 1) % 4)) << 8 | 255 & a[d + 2 >> 2] >> 8 * ((d + 2) % 4), f = 0; 4 > f; f++) c += 8 * d + 6 * f > 32 * a.length ? b64pad : b.charAt(63 & e >> 6 * (3 - f));
     193     return c
     194 }
     195 function encode_param(a) {
     196     var b = new Base64;
     197     return b.encode(a)
     198 }
     199 function encode_secret() {
     200     var b, a = appId;
     201     for (b = 0; b < arguments.length; b++) a += arguments[b];
     202     return a = a.replace(/s/g, ""),
     203         hex_md5(a)
     204 }
     205 function decode_result(a) {
     206     var b = new Base64;
     207     return b.decode(b.decode(b.decode(a)))
     208 }
     209 var hexcase = 0,
     210     b64pad = "",
     211     chrsz = 8,
     212     appId = "a01901d3caba1f362d69474674ce477f";
     213 var hexcase = 0;
     214 var b64pad = "";
     215 
     216 function hex_md5(s) {
     217     return rstr2hex(rstr_md5(str2rstr_utf8(s)))
     218 }
     219 function b64_md5(s) {
     220     return rstr2b64(rstr_md5(str2rstr_utf8(s)))
     221 }
     222 function any_md5(s, e) {
     223     return rstr2any(rstr_md5(str2rstr_utf8(s)), e)
     224 }
     225 function hex_hmac_md5(k, d) {
     226     return rstr2hex(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)))
     227 }
     228 function b64_hmac_md5(k, d) {
     229     return rstr2b64(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)))
     230 }
     231 function any_hmac_md5(k, d, e) {
     232     return rstr2any(rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d)), e)
     233 }
     234 function md5_vm_test() {
     235     return hex_md5("abc").toLowerCase() == "900150983cd24fb0d6963f7d28e17f72"
     236 }
     237 function rstr_md5(s) {
     238     return binl2rstr(binl_md5(rstr2binl(s), s.length * 8))
     239 }
     240 function rstr_hmac_md5(key, data) {
     241     var bkey = rstr2binl(key);
     242     if (bkey.length > 16) bkey = binl_md5(bkey, key.length * 8);
     243     var ipad = Array(16),
     244         opad = Array(16);
     245     for (var i = 0; i < 16; i++) {
     246         ipad[i] = bkey[i] ^ 0x36363636;
     247         opad[i] = bkey[i] ^ 0x5C5C5C5C
     248     }
     249     var hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
     250     return binl2rstr(binl_md5(opad.concat(hash), 512 + 128))
     251 }
     252 function rstr2hex(input) {
     253     try {
     254         hexcase
     255     } catch (e) {
     256         hexcase = 0
     257     }
     258     var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
     259     var output = "";
     260     var x;
     261     for (var i = 0; i < input.length; i++) {
     262         x = input.charCodeAt(i);
     263         output += hex_tab.charAt((x >>> 4) & 0x0F) + hex_tab.charAt(x & 0x0F)
     264     }
     265     return output
     266 }
     267 function rstr2b64(input) {
     268     try {
     269         b64pad
     270     } catch (e) {
     271         b64pad = ''
     272     }
     273     var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
     274     var output = "";
     275     var len = input.length;
     276     for (var i = 0; i < len; i += 3) {
     277         var triplet = (input.charCodeAt(i) << 16) | (i + 1 < len ? input.charCodeAt(i + 1) << 8 : 0) | (i + 2 < len ? input.charCodeAt(i + 2) : 0);
     278         for (var j = 0; j < 4; j++) {
     279             if (i * 8 + j * 6 > input.length * 8) output += b64pad;
     280             else output += tab.charAt((triplet >>> 6 * (3 - j)) & 0x3F)
     281         }
     282     }
     283     return output
     284 }
     285 function rstr2any(input, encoding) {
     286     var divisor = encoding.length;
     287     var i, j, q, x, quotient;
     288     var dividend = Array(Math.ceil(input.length / 2));
     289     for (i = 0; i < dividend.length; i++) {
     290         dividend[i] = (input.charCodeAt(i * 2) << 8) | input.charCodeAt(i * 2 + 1)
     291     }
     292     var full_length = Math.ceil(input.length * 8 / (Math.log(encoding.length) / Math.log(2)));
     293     var remainders = Array(full_length);
     294     for (j = 0; j < full_length; j++) {
     295         quotient = Array();
     296         x = 0;
     297         for (i = 0; i < dividend.length; i++) {
     298             x = (x << 16) + dividend[i];
     299             q = Math.floor(x / divisor);
     300             x -= q * divisor;
     301             if (quotient.length > 0 || q > 0) quotient[quotient.length] = q
     302         }
     303         remainders[j] = x;
     304         dividend = quotient
     305     }
     306     var output = "";
     307     for (i = remainders.length - 1; i >= 0; i--) output += encoding.charAt(remainders[i]);
     308     return output
     309 }
     310 function str2rstr_utf8(input) {
     311     var output = "";
     312     var i = -1;
     313     var x, y;
     314     while (++i < input.length) {
     315         x = input.charCodeAt(i);
     316         y = i + 1 < input.length ? input.charCodeAt(i + 1) : 0;
     317         if (0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF) {
     318             x = 0x10000 + ((x & 0x03FF) << 10) + (y & 0x03FF);
     319             i++
     320         }
     321         if (x <= 0x7F) output += String.fromCharCode(x);
     322         else if (x <= 0x7FF) output += String.fromCharCode(0xC0 | ((x >>> 6) & 0x1F), 0x80 | (x & 0x3F));
     323         else if (x <= 0xFFFF) output += String.fromCharCode(0xE0 | ((x >>> 12) & 0x0F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F));
     324         else if (x <= 0x1FFFFF) output += String.fromCharCode(0xF0 | ((x >>> 18) & 0x07), 0x80 | ((x >>> 12) & 0x3F), 0x80 | ((x >>> 6) & 0x3F), 0x80 | (x & 0x3F))
     325     }
     326     return output
     327 }
     328 function str2rstr_utf16le(input) {
     329     var output = "";
     330     for (var i = 0; i < input.length; i++) output += String.fromCharCode(input.charCodeAt(i) & 0xFF, (input.charCodeAt(i) >>> 8) & 0xFF);
     331     return output
     332 }
     333 function str2rstr_utf16be(input) {
     334     var output = "";
     335     for (var i = 0; i < input.length; i++) output += String.fromCharCode((input.charCodeAt(i) >>> 8) & 0xFF, input.charCodeAt(i) & 0xFF);
     336     return output
     337 }
     338 function rstr2binl(input) {
     339     var output = Array(input.length >> 2);
     340     for (var i = 0; i < output.length; i++) output[i] = 0;
     341     for (var i = 0; i < input.length * 8; i += 8) output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
     342     return output
     343 }
     344 function binl2rstr(input) {
     345     var output = "";
     346     for (var i = 0; i < input.length * 32; i += 8) output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
     347     return output
     348 }
     349 function binl_md5(x, len) {
     350     x[len >> 5] |= 0x80 << ((len) % 32);
     351     x[(((len + 64) >>> 9) << 4) + 14] = len;
     352     var a = 1732584193;
     353     var b = -271733879;
     354     var c = -1732584194;
     355     var d = 271733878;
     356     for (var i = 0; i < x.length; i += 16) {
     357         var olda = a;
     358         var oldb = b;
     359         var oldc = c;
     360         var oldd = d;
     361         a = md5_ff(a, b, c, d, x[i + 0], 7, -680876936);
     362         d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
     363         c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
     364         b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
     365         a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
     366         d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
     367         c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
     368         b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
     369         a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
     370         d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
     371         c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
     372         b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
     373         a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
     374         d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
     375         c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
     376         b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
     377         a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
     378         d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
     379         c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
     380         b = md5_gg(b, c, d, a, x[i + 0], 20, -373897302);
     381         a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
     382         d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
     383         c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
     384         b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
     385         a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
     386         d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
     387         c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
     388         b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
     389         a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
     390         d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
     391         c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
     392         b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
     393         a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
     394         d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
     395         c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
     396         b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
     397         a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
     398         d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
     399         c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
     400         b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
     401         a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
     402         d = md5_hh(d, a, b, c, x[i + 0], 11, -358537222);
     403         c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
     404         b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
     405         a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
     406         d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
     407         c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
     408         b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
     409         a = md5_ii(a, b, c, d, x[i + 0], 6, -198630844);
     410         d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
     411         c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
     412         b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
     413         a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
     414         d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
     415         c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
     416         b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
     417         a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
     418         d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
     419         c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
     420         b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
     421         a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
     422         d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
     423         c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
     424         b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
     425         a = safe_add(a, olda);
     426         b = safe_add(b, oldb);
     427         c = safe_add(c, oldc);
     428         d = safe_add(d, oldd)
     429     }
     430     return Array(a, b, c, d)
     431 }
     432 function md5_cmn(q, a, b, x, s, t) {
     433     return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b)
     434 }
     435 function md5_ff(a, b, c, d, x, s, t) {
     436     return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t)
     437 }
     438 function md5_gg(a, b, c, d, x, s, t) {
     439     return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t)
     440 }
     441 function md5_hh(a, b, c, d, x, s, t) {
     442     return md5_cmn(b ^ c ^ d, a, b, x, s, t)
     443 }
     444 function md5_ii(a, b, c, d, x, s, t) {
     445     return md5_cmn(c ^ (b | (~d)), a, b, x, s, t)
     446 }
     447 function safe_add(x, y) {
     448     var lsw = (x & 0xFFFF) + (y & 0xFFFF);
     449     var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
     450     return (msw << 16) | (lsw & 0xFFFF)
     451 }
     452 function bit_rol(num, cnt) {
     453     return (num << cnt) | (num >>> (32 - cnt))
     454 }
     455 var CryptoJS = CryptoJS ||
     456     function (h, r) {
     457         var k = {},
     458             l = k.lib = {},
     459             n = function () {
     460             },
     461             f = l.Base = {
     462                 extend: function (a) {
     463                     n.prototype = this;
     464                     var b = new n;
     465                     a && b.mixIn(a);
     466                     b.hasOwnProperty("init") || (b.init = function () {
     467                         b.s.init.apply(this, arguments)
     468                     });
     469                     b.init.prototype = b;
     470                     b.s = this;
     471                     return b
     472                 },
     473                 create: function () {
     474                     var a = this.extend();
     475                     a.init.apply(a, arguments);
     476                     return a
     477                 },
     478                 init: function () {
     479                 },
     480                 mixIn: function (a) {
     481                     for (var b in a) a.hasOwnProperty(b) && (this[b] = a[b]);
     482                     a.hasOwnProperty("toString") && (this.toString = a.toString)
     483                 },
     484                 clone: function () {
     485                     return this.init.prototype.extend(this)
     486                 }
     487             },
     488             j = l.WordArray = f.extend({
     489                 init: function (a, b) {
     490                     a = this.words = a || [];
     491                     this.sigBytes = b != r ? b : 4 * a.length
     492                 },
     493                 toString: function (a) {
     494                     return (a || s).stringify(this)
     495                 },
     496                 concat: function (a) {
     497                     var b = this.words,
     498                         d = a.words,
     499                         c = this.sigBytes;
     500                     a = a.sigBytes;
     501                     this.clamp();
     502                     if (c % 4) for (var e = 0; e < a; e++) b[c + e >>> 2] |= (d[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 - 8 * ((c + e) % 4);
     503                     else if (65535 < d.length) for (e = 0; e < a; e += 4) b[c + e >>> 2] = d[e >>> 2];
     504                     else b.push.apply(b, d);
     505                     this.sigBytes += a;
     506                     return this
     507                 },
     508                 clamp: function () {
     509                     var a = this.words,
     510                         b = this.sigBytes;
     511                     a[b >>> 2] &= 4294967295 << 32 - 8 * (b % 4);
     512                     a.length = h.ceil(b / 4)
     513                 },
     514                 clone: function () {
     515                     var a = f.clone.call(this);
     516                     a.words = this.words.slice(0);
     517                     return a
     518                 },
     519                 random: function (a) {
     520                     for (var b = [], d = 0; d < a; d += 4) b.push(4294967296 * h.random() | 0);
     521                     return new j.init(b, a)
     522                 }
     523             }),
     524             m = k.enc = {},
     525             s = m.Hex = {
     526                 stringify: function (a) {
     527                     var b = a.words;
     528                     a = a.sigBytes;
     529                     for (var d = [], c = 0; c < a; c++) {
     530                         var e = b[c >>> 2] >>> 24 - 8 * (c % 4) & 255;
     531                         d.push((e >>> 4).toString(16));
     532                         d.push((e & 15).toString(16))
     533                     }
     534                     return d.join("")
     535                 },
     536                 parse: function (a) {
     537                     for (var b = a.length, d = [], c = 0; c < b; c += 2) d[c >>> 3] |= parseInt(a.substr(c, 2), 16) << 24 - 4 * (c % 8);
     538                     return new j.init(d, b / 2)
     539                 }
     540             },
     541             p = m.Latin1 = {
     542                 stringify: function (a) {
     543                     var b = a.words;
     544                     a = a.sigBytes;
     545                     for (var d = [], c = 0; c < a; c++) d.push(String.fromCharCode(b[c >>> 2] >>> 24 - 8 * (c % 4) & 255));
     546                     return d.join("")
     547                 },
     548                 parse: function (a) {
     549                     for (var b = a.length, d = [], c = 0; c < b; c++) d[c >>> 2] |= (a.charCodeAt(c) & 255) << 24 - 8 * (c % 4);
     550                     return new j.init(d, b)
     551                 }
     552             },
     553             t = m.Utf8 = {
     554                 stringify: function (a) {
     555                     try {
     556                         return decodeURIComponent(escape(p.stringify(a)))
     557                     } catch (b) {
     558                         throw Error("Malformed UTF-8 data")
     559                     }
     560                 },
     561                 parse: function (a) {
     562                     return p.parse(unescape(encodeURIComponent(a)))
     563                 }
     564             },
     565             q = l.BufferedBlockAlgorithm = f.extend({
     566                 reset: function () {
     567                     this._3 = new j.init;
     568                     this._19 = 0
     569                 },
     570                 _11: function (a) {
     571                     "string" == typeof a && (a = t.parse(a));
     572                     this._3.concat(a);
     573                     this._19 += a.sigBytes
     574                 },
     575                 _4: function (a) {
     576                     var b = this._3,
     577                         d = b.words,
     578                         c = b.sigBytes,
     579                         e = this.blockSize,
     580                         f = c / (4 * e),
     581                         f = a ? h.ceil(f) : h.max((f | 0) - this._20, 0);
     582                     a = f * e;
     583                     c = h.min(4 * a, c);
     584                     if (a) {
     585                         for (var g = 0; g < a; g += e) this._23(d, g);
     586                         g = d.splice(0, a);
     587                         b.sigBytes -= c
     588                     }
     589                     return new j.init(g, c)
     590                 },
     591                 clone: function () {
     592                     var a = f.clone.call(this);
     593                     a._3 = this._3.clone();
     594                     return a
     595                 },
     596                 _20: 0
     597             });
     598         l.Hasher = q.extend({
     599             cfg: f.extend(),
     600             init: function (a) {
     601                 this.cfg = this.cfg.extend(a);
     602                 this.reset()
     603             },
     604             reset: function () {
     605                 q.reset.call(this);
     606                 this._7()
     607             },
     608             update: function (a) {
     609                 this._11(a);
     610                 this._4();
     611                 return this
     612             },
     613             finalize: function (a) {
     614                 a && this._11(a);
     615                 return this._10()
     616             },
     617             blockSize: 16,
     618             _5: function (a) {
     619                 return function (b, d) {
     620                     return (new a.init(d)).finalize(b)
     621                 }
     622             },
     623             _30: function (a) {
     624                 return function (b, d) {
     625                     return (new u.HMAC.init(a, d)).finalize(b)
     626                 }
     627             }
     628         });
     629         var u = k.algo = {};
     630         return k
     631     }(Math);
     632 (function () {
     633     var h = CryptoJS,
     634         j = h.lib.WordArray;
     635     h.enc.Base64 = {
     636         stringify: function (b) {
     637             var e = b.words,
     638                 f = b.sigBytes,
     639                 c = this._17;
     640             b.clamp();
     641             b = [];
     642             for (var a = 0; a < f; a += 3) for (var d = (e[a >>> 2] >>> 24 - 8 * (a % 4) & 255) << 16 | (e[a + 1 >>> 2] >>> 24 - 8 * ((a + 1) % 4) & 255) << 8 | e[a + 2 >>> 2] >>> 24 - 8 * ((a + 2) % 4) & 255, g = 0; 4 > g && a + 0.75 * g < f; g++) b.push(c.charAt(d >>> 6 * (3 - g) & 63));
     643             if (e = c.charAt(64)) for (; b.length % 4;) b.push(e);
     644             return b.join("")
     645         },
     646         parse: function (b) {
     647             var e = b.length,
     648                 f = this._17,
     649                 c = f.charAt(64);
     650             c && (c = b.indexOf(c), -1 != c && (e = c));
     651             for (var c = [], a = 0, d = 0; d < e; d++) if (d % 4) {
     652                 var g = f.indexOf(b.charAt(d - 1)) << 2 * (d % 4),
     653                     h = f.indexOf(b.charAt(d)) >>> 6 - 2 * (d % 4);
     654                 c[a >>> 2] |= (g | h) << 24 - 8 * (a % 4);
     655                 a++
     656             }
     657             return j.create(c, a)
     658         },
     659         _17: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
     660     }
     661 })();
     662 CryptoJS.lib.Cipher ||
     663 function (u) {
     664     var g = CryptoJS,
     665         f = g.lib,
     666         k = f.Base,
     667         l = f.WordArray,
     668         q = f.BufferedBlockAlgorithm,
     669         r = g.enc.Base64,
     670         v = g.algo.EvpKDF,
     671         n = f.Cipher = q.extend({
     672             cfg: k.extend(),
     673             createEncryptor: function (a, b) {
     674                 return this.create(this._12, a, b)
     675             },
     676             createDecryptor: function (a, b) {
     677                 return this.create(this._33, a, b)
     678             },
     679             init: function (a, b, c) {
     680                 this.cfg = this.cfg.extend(c);
     681                 this._16 = a;
     682                 this._13 = b;
     683                 this.reset()
     684             },
     685             reset: function () {
     686                 q.reset.call(this);
     687                 this._7()
     688             },
     689             process: function (a) {
     690                 this._11(a);
     691                 return this._4()
     692             },
     693             finalize: function (a) {
     694                 a && this._11(a);
     695                 return this._10()
     696             },
     697             keySize: 4,
     698             ivSize: 4,
     699             _12: 1,
     700             _33: 2,
     701             _5: function (a) {
     702                 return {
     703                     encrypt: function (b, c, d) {
     704                         return ("string" == typeof c ? s : j).encrypt(a, b, c, d)
     705                     },
     706                     decrypt: function (b, c, d) {
     707                         return ("string" == typeof c ? s : j).decrypt(a, b, c, d)
     708                     }
     709                 }
     710             }
     711         });
     712     f.StreamCipher = n.extend({
     713         _10: function () {
     714             return this._4(!0)
     715         },
     716         blockSize: 1
     717     });
     718     var m = g.mode = {},
     719         t = function (a, b, c) {
     720             var d = this._18;
     721             d ? this._18 = u : d = this._14;
     722             for (var e = 0; e < c; e++) a[b + e] ^= d[e]
     723         },
     724         h = (f.BlockCipherMode = k.extend({
     725             createEncryptor: function (a, b) {
     726                 return this.Encryptor.create(a, b)
     727             },
     728             createDecryptor: function (a, b) {
     729                 return this.Decryptor.create(a, b)
     730             },
     731             init: function (a, b) {
     732                 this._8 = a;
     733                 this._18 = b
     734             }
     735         })).extend();
     736     h.Encryptor = h.extend({
     737         processBlock: function (a, b) {
     738             var c = this._8,
     739                 d = c.blockSize;
     740             t.call(this, a, b, d);
     741             c.encryptBlock(a, b);
     742             this._14 = a.slice(b, b + d)
     743         }
     744     });
     745     h.Decryptor = h.extend({
     746         processBlock: function (a, b) {
     747             var c = this._8,
     748                 d = c.blockSize,
     749                 e = a.slice(b, b + d);
     750             c.decryptBlock(a, b);
     751             t.call(this, a, b, d);
     752             this._14 = e
     753         }
     754     });
     755     m = m.CBC = h;
     756     h = (g.pad = {}).Pkcs7 = {
     757         pad: function (a, b) {
     758             for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, e = [], f = 0; f < c; f += 4) e.push(d);
     759             c = l.create(e, c);
     760             a.concat(c)
     761         },
     762         unpad: function (a) {
     763             a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255
     764         }
     765     };
     766     f.BlockCipher = n.extend({
     767         cfg: n.cfg.extend({
     768             mode: m,
     769             padding: h
     770         }),
     771         reset: function () {
     772             n.reset.call(this);
     773             var a = this.cfg,
     774                 b = a.iv,
     775                 a = a.mode;
     776             if (this._16 == this._12) var c = a.createEncryptor;
     777             else c = a.createDecryptor,
     778                 this._20 = 1;
     779             this._31 = c.call(a, this, b && b.words)
     780         },
     781         _23: function (a, b) {
     782             this._31.processBlock(a, b)
     783         },
     784         _10: function () {
     785             var a = this.cfg.padding;
     786             if (this._16 == this._12) {
     787                 a.pad(this._3, this.blockSize);
     788                 var b = this._4(!0)
     789             } else b = this._4(!0),
     790                 a.unpad(b);
     791             return b
     792         },
     793         blockSize: 4
     794     });
     795     var p = f.CipherParams = k.extend({
     796             init: function (a) {
     797                 this.mixIn(a)
     798             },
     799             toString: function (a) {
     800                 return (a || this.formatter).stringify(this)
     801             }
     802         }),
     803         m = (g.format = {}).OpenSSL = {
     804             stringify: function (a) {
     805                 var b = a.ciphertext;
     806                 a = a.salt;
     807                 return (a ? l.create([1398893684, 1701076831]).concat(a).concat(b) : b).toString(r)
     808             },
     809             parse: function (a) {
     810                 a = r.parse(a);
     811                 var b = a.words;
     812                 if (1398893684 == b[0] && 1701076831 == b[1]) {
     813                     var c = l.create(b.slice(2, 4));
     814                     b.splice(0, 4);
     815                     a.sigBytes -= 16
     816                 }
     817                 return p.create({
     818                     ciphertext: a,
     819                     salt: c
     820                 })
     821             }
     822         },
     823         j = f.SerializableCipher = k.extend({
     824             cfg: k.extend({
     825                 format: m
     826             }),
     827             encrypt: function (a, b, c, d) {
     828                 d = this.cfg.extend(d);
     829                 var e = a.createEncryptor(c, d);
     830                 b = e.finalize(b);
     831                 e = e.cfg;
     832                 return p.create({
     833                     ciphertext: b,
     834                     key: c,
     835                     iv: e.iv,
     836                     algorithm: a,
     837                     mode: e.mode,
     838                     padding: e.padding,
     839                     blockSize: a.blockSize,
     840                     formatter: d.format
     841                 })
     842             },
     843             decrypt: function (a, b, c, d) {
     844                 d = this.cfg.extend(d);
     845                 b = this._15(b, d.format);
     846                 return a.createDecryptor(c, d).finalize(b.ciphertext)
     847             },
     848             _15: function (a, b) {
     849                 return "string" == typeof a ? b.parse(a, this) : a
     850             }
     851         }),
     852         g = (g.kdf = {}).OpenSSL = {
     853             execute: function (a, b, c, d) {
     854                 d || (d = l.random(8));
     855                 a = v.create({
     856                     keySize: b + c
     857                 }).compute(a, d);
     858                 c = l.create(a.words.slice(b), 4 * c);
     859                 a.sigBytes = 4 * b;
     860                 return p.create({
     861                     key: a,
     862                     iv: c,
     863                     salt: d
     864                 })
     865             }
     866         },
     867         s = f.PasswordBasedCipher = j.extend({
     868             cfg: j.cfg.extend({
     869                 kdf: g
     870             }),
     871             encrypt: function (a, b, c, d) {
     872                 d = this.cfg.extend(d);
     873                 c = d.kdf.execute(c, a.keySize, a.ivSize);
     874                 d.iv = c.iv;
     875                 a = j.encrypt.call(this, a, b, c.key, d);
     876                 a.mixIn(c);
     877                 return a
     878             },
     879             decrypt: function (a, b, c, d) {
     880                 d = this.cfg.extend(d);
     881                 b = this._15(b, d.format);
     882                 c = d.kdf.execute(c, a.keySize, a.ivSize, b.salt);
     883                 d.iv = c.iv;
     884                 return j.decrypt.call(this, a, b, c.key, d)
     885             }
     886         })
     887 }();
     888 CryptoJS.mode.ECB = function () {
     889     var a = CryptoJS.lib.BlockCipherMode.extend();
     890     a.Encryptor = a.extend({
     891         processBlock: function (a, b) {
     892             this._8.encryptBlock(a, b)
     893         }
     894     });
     895     a.Decryptor = a.extend({
     896         processBlock: function (a, b) {
     897             this._8.decryptBlock(a, b)
     898         }
     899     });
     900     return a
     901 }();
     902 (function (E) {
     903     function h(a, f, g, j, p, h, k) {
     904         a = a + (f & g | ~f & j) + p + k;
     905         return (a << h | a >>> 32 - h) + f
     906     }
     907 
     908     function k(a, f, g, j, p, h, k) {
     909         a = a + (f & j | g & ~j) + p + k;
     910         return (a << h | a >>> 32 - h) + f
     911     }
     912 
     913     function l(a, f, g, j, h, k, l) {
     914         a = a + (f ^ g ^ j) + h + l;
     915         return (a << k | a >>> 32 - k) + f
     916     }
     917 
     918     function n(a, f, g, j, h, k, l) {
     919         a = a + (g ^ (f | ~j)) + h + l;
     920         return (a << k | a >>> 32 - k) + f
     921     }
     922 
     923     for (var r = CryptoJS, q = r.lib, F = q.WordArray, s = q.Hasher, q = r.algo, a = [], t = 0; 64 > t; t++) a[t] = 4294967296 * E.abs(E.sin(t + 1)) | 0;
     924     q = q.MD5 = s.extend({
     925         _7: function () {
     926             this._9 = new F.init([1732584193, 4023233417, 2562383102, 271733878])
     927         },
     928         _23: function (m, f) {
     929             for (var g = 0; 16 > g; g++) {
     930                 var j = f + g,
     931                     p = m[j];
     932                 m[j] = (p << 8 | p >>> 24) & 16711935 | (p << 24 | p >>> 8) & 4278255360
     933             }
     934             var g = this._9.words,
     935                 j = m[f + 0],
     936                 p = m[f + 1],
     937                 q = m[f + 2],
     938                 r = m[f + 3],
     939                 s = m[f + 4],
     940                 t = m[f + 5],
     941                 u = m[f + 6],
     942                 v = m[f + 7],
     943                 w = m[f + 8],
     944                 x = m[f + 9],
     945                 y = m[f + 10],
     946                 z = m[f + 11],
     947                 A = m[f + 12],
     948                 B = m[f + 13],
     949                 C = m[f + 14],
     950                 D = m[f + 15],
     951                 b = g[0],
     952                 c = g[1],
     953                 d = g[2],
     954                 e = g[3],
     955                 b = h(b, c, d, e, j, 7, a[0]),
     956                 e = h(e, b, c, d, p, 12, a[1]),
     957                 d = h(d, e, b, c, q, 17, a[2]),
     958                 c = h(c, d, e, b, r, 22, a[3]),
     959                 b = h(b, c, d, e, s, 7, a[4]),
     960                 e = h(e, b, c, d, t, 12, a[5]),
     961                 d = h(d, e, b, c, u, 17, a[6]),
     962                 c = h(c, d, e, b, v, 22, a[7]),
     963                 b = h(b, c, d, e, w, 7, a[8]),
     964                 e = h(e, b, c, d, x, 12, a[9]),
     965                 d = h(d, e, b, c, y, 17, a[10]),
     966                 c = h(c, d, e, b, z, 22, a[11]),
     967                 b = h(b, c, d, e, A, 7, a[12]),
     968                 e = h(e, b, c, d, B, 12, a[13]),
     969                 d = h(d, e, b, c, C, 17, a[14]),
     970                 c = h(c, d, e, b, D, 22, a[15]),
     971                 b = k(b, c, d, e, p, 5, a[16]),
     972                 e = k(e, b, c, d, u, 9, a[17]),
     973                 d = k(d, e, b, c, z, 14, a[18]),
     974                 c = k(c, d, e, b, j, 20, a[19]),
     975                 b = k(b, c, d, e, t, 5, a[20]),
     976                 e = k(e, b, c, d, y, 9, a[21]),
     977                 d = k(d, e, b, c, D, 14, a[22]),
     978                 c = k(c, d, e, b, s, 20, a[23]),
     979                 b = k(b, c, d, e, x, 5, a[24]),
     980                 e = k(e, b, c, d, C, 9, a[25]),
     981                 d = k(d, e, b, c, r, 14, a[26]),
     982                 c = k(c, d, e, b, w, 20, a[27]),
     983                 b = k(b, c, d, e, B, 5, a[28]),
     984                 e = k(e, b, c, d, q, 9, a[29]),
     985                 d = k(d, e, b, c, v, 14, a[30]),
     986                 c = k(c, d, e, b, A, 20, a[31]),
     987                 b = l(b, c, d, e, t, 4, a[32]),
     988                 e = l(e, b, c, d, w, 11, a[33]),
     989                 d = l(d, e, b, c, z, 16, a[34]),
     990                 c = l(c, d, e, b, C, 23, a[35]),
     991                 b = l(b, c, d, e, p, 4, a[36]),
     992                 e = l(e, b, c, d, s, 11, a[37]),
     993                 d = l(d, e, b, c, v, 16, a[38]),
     994                 c = l(c, d, e, b, y, 23, a[39]),
     995                 b = l(b, c, d, e, B, 4, a[40]),
     996                 e = l(e, b, c, d, j, 11, a[41]),
     997                 d = l(d, e, b, c, r, 16, a[42]),
     998                 c = l(c, d, e, b, u, 23, a[43]),
     999                 b = l(b, c, d, e, x, 4, a[44]),
    1000                 e = l(e, b, c, d, A, 11, a[45]),
    1001                 d = l(d, e, b, c, D, 16, a[46]),
    1002                 c = l(c, d, e, b, q, 23, a[47]),
    1003                 b = n(b, c, d, e, j, 6, a[48]),
    1004                 e = n(e, b, c, d, v, 10, a[49]),
    1005                 d = n(d, e, b, c, C, 15, a[50]),
    1006                 c = n(c, d, e, b, t, 21, a[51]),
    1007                 b = n(b, c, d, e, A, 6, a[52]),
    1008                 e = n(e, b, c, d, r, 10, a[53]),
    1009                 d = n(d, e, b, c, y, 15, a[54]),
    1010                 c = n(c, d, e, b, p, 21, a[55]),
    1011                 b = n(b, c, d, e, w, 6, a[56]),
    1012                 e = n(e, b, c, d, D, 10, a[57]),
    1013                 d = n(d, e, b, c, u, 15, a[58]),
    1014                 c = n(c, d, e, b, B, 21, a[59]),
    1015                 b = n(b, c, d, e, s, 6, a[60]),
    1016                 e = n(e, b, c, d, z, 10, a[61]),
    1017                 d = n(d, e, b, c, q, 15, a[62]),
    1018                 c = n(c, d, e, b, x, 21, a[63]);
    1019             g[0] = g[0] + b | 0;
    1020             g[1] = g[1] + c | 0;
    1021             g[2] = g[2] + d | 0;
    1022             g[3] = g[3] + e | 0
    1023         },
    1024         _10: function () {
    1025             var a = this._3,
    1026                 f = a.words,
    1027                 g = 8 * this._19,
    1028                 j = 8 * a.sigBytes;
    1029             f[j >>> 5] |= 128 << 24 - j % 32;
    1030             var h = E.floor(g / 4294967296);
    1031             f[(j + 64 >>> 9 << 4) + 15] = (h << 8 | h >>> 24) & 16711935 | (h << 24 | h >>> 8) & 4278255360;
    1032             f[(j + 64 >>> 9 << 4) + 14] = (g << 8 | g >>> 24) & 16711935 | (g << 24 | g >>> 8) & 4278255360;
    1033             a.sigBytes = 4 * (f.length + 1);
    1034             this._4();
    1035             a = this._9;
    1036             f = a.words;
    1037             for (g = 0; 4 > g; g++) j = f[g],
    1038                 f[g] = (j << 8 | j >>> 24) & 16711935 | (j << 24 | j >>> 8) & 4278255360;
    1039             return a
    1040         },
    1041         clone: function () {
    1042             var a = s.clone.call(this);
    1043             a._9 = this._9.clone();
    1044             return a
    1045         }
    1046     });
    1047     r.MD5 = s._5(q);
    1048     r.HmacMD5 = s._30(q)
    1049 })(Math);
    1050 (function () {
    1051     for (var q = CryptoJS, x = q.lib.BlockCipher, r = q.algo, j = [], y = [], z = [], A = [], B = [], C = [], s = [], u = [], v = [], w = [], g = [], k = 0; 256 > k; k++) g[k] = 128 > k ? k << 1 : k << 1 ^ 283;
    1052     for (var n = 0, l = 0, k = 0; 256 > k; k++) {
    1053         var f = l ^ l << 1 ^ l << 2 ^ l << 3 ^ l << 4,
    1054             f = f >>> 8 ^ f & 255 ^ 99;
    1055         j[n] = f;
    1056         y[f] = n;
    1057         var t = g[n],
    1058             D = g[t],
    1059             E = g[D],
    1060             b = 257 * g[f] ^ 16843008 * f;
    1061         z[n] = b << 24 | b >>> 8;
    1062         A[n] = b << 16 | b >>> 16;
    1063         B[n] = b << 8 | b >>> 24;
    1064         C[n] = b;
    1065         b = 16843009 * E ^ 65537 * D ^ 257 * t ^ 16843008 * n;
    1066         s[f] = b << 24 | b >>> 8;
    1067         u[f] = b << 16 | b >>> 16;
    1068         v[f] = b << 8 | b >>> 24;
    1069         w[f] = b;
    1070         n ? (n = t ^ g[g[g[E ^ t]]], l ^= g[g[l]]) : n = l = 1
    1071     }
    1072     var F = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
    1073         r = r.AES = x.extend({
    1074             _7: function () {
    1075                 for (var c = this._13, e = c.words, a = c.sigBytes / 4, c = 4 * ((this._26 = a + 6) + 1), b = this._32 = [], h = 0; h < c; h++) if (h < a) b[h] = e[h];
    1076                 else {
    1077                     var d = b[h - 1];
    1078                     h % a ? 6 < a && 4 == h % a && (d = j[d >>> 24] << 24 | j[d >>> 16 & 255] << 16 | j[d >>> 8 & 255] << 8 | j[d & 255]) : (d = d << 8 | d >>> 24, d = j[d >>> 24] << 24 | j[d >>> 16 & 255] << 16 | j[d >>> 8 & 255] << 8 | j[d & 255], d ^= F[h / a | 0] << 24);
    1079                     b[h] = b[h - a] ^ d
    1080                 }
    1081                 e = this._34 = [];
    1082                 for (a = 0; a < c; a++) h = c - a,
    1083                     d = a % 4 ? b[h] : b[h - 4],
    1084                     e[a] = 4 > a || 4 >= h ? d : s[j[d >>> 24]] ^ u[j[d >>> 16 & 255]] ^ v[j[d >>> 8 & 255]] ^ w[j[d & 255]]
    1085             },
    1086             encryptBlock: function (c, e) {
    1087                 this._6(c, e, this._32, z, A, B, C, j)
    1088             },
    1089             decryptBlock: function (c, e) {
    1090                 var a = c[e + 1];
    1091                 c[e + 1] = c[e + 3];
    1092                 c[e + 3] = a;
    1093                 this._6(c, e, this._34, s, u, v, w, y);
    1094                 a = c[e + 1];
    1095                 c[e + 1] = c[e + 3];
    1096                 c[e + 3] = a
    1097             },
    1098             _6: function (c, e, a, b, h, d, j, m) {
    1099                 for (var n = this._26, f = c[e] ^ a[0], g = c[e + 1] ^ a[1], k = c[e + 2] ^ a[2], p = c[e + 3] ^ a[3], l = 4, t = 1; t < n; t++) var q = b[f >>> 24] ^ h[g >>> 16 & 255] ^ d[k >>> 8 & 255] ^ j[p & 255] ^ a[l++],
    1100                     r = b[g >>> 24] ^ h[k >>> 16 & 255] ^ d[p >>> 8 & 255] ^ j[f & 255] ^ a[l++],
    1101                     s = b[k >>> 24] ^ h[p >>> 16 & 255] ^ d[f >>> 8 & 255] ^ j[g & 255] ^ a[l++],
    1102                     p = b[p >>> 24] ^ h[f >>> 16 & 255] ^ d[g >>> 8 & 255] ^ j[k & 255] ^ a[l++],
    1103                     f = q,
    1104                     g = r,
    1105                     k = s;
    1106                 q = (m[f >>> 24] << 24 | m[g >>> 16 & 255] << 16 | m[k >>> 8 & 255] << 8 | m[p & 255]) ^ a[l++];
    1107                 r = (m[g >>> 24] << 24 | m[k >>> 16 & 255] << 16 | m[p >>> 8 & 255] << 8 | m[f & 255]) ^ a[l++];
    1108                 s = (m[k >>> 24] << 24 | m[p >>> 16 & 255] << 16 | m[f >>> 8 & 255] << 8 | m[g & 255]) ^ a[l++];
    1109                 p = (m[p >>> 24] << 24 | m[f >>> 16 & 255] << 16 | m[g >>> 8 & 255] << 8 | m[k & 255]) ^ a[l++];
    1110                 c[e] = q;
    1111                 c[e + 1] = r;
    1112                 c[e + 2] = s;
    1113                 c[e + 3] = p
    1114             },
    1115             keySize: 8
    1116         });
    1117     q.AES = x._5(r)
    1118 })();
    1119 (function () {
    1120     function j(b, c) {
    1121         var a = (this._0 >>> b ^ this._1) & c;
    1122         this._1 ^= a;
    1123         this._0 ^= a << b
    1124     }
    1125 
    1126     function l(b, c) {
    1127         var a = (this._1 >>> b ^ this._0) & c;
    1128         this._0 ^= a;
    1129         this._1 ^= a << b
    1130     }
    1131 
    1132     var h = CryptoJS,
    1133         e = h.lib,
    1134         n = e.WordArray,
    1135         e = e.BlockCipher,
    1136         g = h.algo,
    1137         q = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4],
    1138         p = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32],
    1139         r = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28],
    1140         s = [{
    1141             "0": 8421888,
    1142             268435456: 32768,
    1143             536870912: 8421378,
    1144             805306368: 2,
    1145             1073741824: 512,
    1146             1342177280: 8421890,
    1147             1610612736: 8389122,
    1148             1879048192: 8388608,
    1149             2147483648: 514,
    1150             2415919104: 8389120,
    1151             2684354560: 33280,
    1152             2952790016: 8421376,
    1153             3221225472: 32770,
    1154             3489660928: 8388610,
    1155             3758096384: 0,
    1156             4026531840: 33282,
    1157             134217728: 0,
    1158             402653184: 8421890,
    1159             671088640: 33282,
    1160             939524096: 32768,
    1161             1207959552: 8421888,
    1162             1476395008: 512,
    1163             1744830464: 8421378,
    1164             2013265920: 2,
    1165             2281701376: 8389120,
    1166             2550136832: 33280,
    1167             2818572288: 8421376,
    1168             3087007744: 8389122,
    1169             3355443200: 8388610,
    1170             3623878656: 32770,
    1171             3892314112: 514,
    1172             4160749568: 8388608,
    1173             1: 32768,
    1174             268435457: 2,
    1175             536870913: 8421888,
    1176             805306369: 8388608,
    1177             1073741825: 8421378,
    1178             1342177281: 33280,
    1179             1610612737: 512,
    1180             1879048193: 8389122,
    1181             2147483649: 8421890,
    1182             2415919105: 8421376,
    1183             2684354561: 8388610,
    1184             2952790017: 33282,
    1185             3221225473: 514,
    1186             3489660929: 8389120,
    1187             3758096385: 32770,
    1188             4026531841: 0,
    1189             134217729: 8421890,
    1190             402653185: 8421376,
    1191             671088641: 8388608,
    1192             939524097: 512,
    1193             1207959553: 32768,
    1194             1476395009: 8388610,
    1195             1744830465: 2,
    1196             2013265921: 33282,
    1197             2281701377: 32770,
    1198             2550136833: 8389122,
    1199             2818572289: 514,
    1200             3087007745: 8421888,
    1201             3355443201: 8389120,
    1202             3623878657: 0,
    1203             3892314113: 33280,
    1204             4160749569: 8421378
    1205         },
    1206             {
    1207                 "0": 1074282512,
    1208                 16777216: 16384,
    1209                 33554432: 524288,
    1210                 50331648: 1074266128,
    1211                 67108864: 1073741840,
    1212                 83886080: 1074282496,
    1213                 100663296: 1073758208,
    1214                 117440512: 16,
    1215                 134217728: 540672,
    1216                 150994944: 1073758224,
    1217                 167772160: 1073741824,
    1218                 184549376: 540688,
    1219                 201326592: 524304,
    1220                 218103808: 0,
    1221                 234881024: 16400,
    1222                 251658240: 1074266112,
    1223                 8388608: 1073758208,
    1224                 25165824: 540688,
    1225                 41943040: 16,
    1226                 58720256: 1073758224,
    1227                 75497472: 1074282512,
    1228                 92274688: 1073741824,
    1229                 109051904: 524288,
    1230                 125829120: 1074266128,
    1231                 142606336: 524304,
    1232                 159383552: 0,
    1233                 176160768: 16384,
    1234                 192937984: 1074266112,
    1235                 209715200: 1073741840,
    1236                 226492416: 540672,
    1237                 243269632: 1074282496,
    1238                 260046848: 16400,
    1239                 268435456: 0,
    1240                 285212672: 1074266128,
    1241                 301989888: 1073758224,
    1242                 318767104: 1074282496,
    1243                 335544320: 1074266112,
    1244                 352321536: 16,
    1245                 369098752: 540688,
    1246                 385875968: 16384,
    1247                 402653184: 16400,
    1248                 419430400: 524288,
    1249                 436207616: 524304,
    1250                 452984832: 1073741840,
    1251                 469762048: 540672,
    1252                 486539264: 1073758208,
    1253                 503316480: 1073741824,
    1254                 520093696: 1074282512,
    1255                 276824064: 540688,
    1256                 293601280: 524288,
    1257                 310378496: 1074266112,
    1258                 327155712: 16384,
    1259                 343932928: 1073758208,
    1260                 360710144: 1074282512,
    1261                 377487360: 16,
    1262                 394264576: 1073741824,
    1263                 411041792: 1074282496,
    1264                 427819008: 1073741840,
    1265                 444596224: 1073758224,
    1266                 461373440: 524304,
    1267                 478150656: 0,
    1268                 494927872: 16400,
    1269                 511705088: 1074266128,
    1270                 528482304: 540672
    1271             },
    1272             {
    1273                 "0": 260,
    1274                 1048576: 0,
    1275                 2097152: 67109120,
    1276                 3145728: 65796,
    1277                 4194304: 65540,
    1278                 5242880: 67108868,
    1279                 6291456: 67174660,
    1280                 7340032: 67174400,
    1281                 8388608: 67108864,
    1282                 9437184: 67174656,
    1283                 10485760: 65792,
    1284                 11534336: 67174404,
    1285                 12582912: 67109124,
    1286                 13631488: 65536,
    1287                 14680064: 4,
    1288                 15728640: 256,
    1289                 524288: 67174656,
    1290                 1572864: 67174404,
    1291                 2621440: 0,
    1292                 3670016: 67109120,
    1293                 4718592: 67108868,
    1294                 5767168: 65536,
    1295                 6815744: 65540,
    1296                 7864320: 260,
    1297                 8912896: 4,
    1298                 9961472: 256,
    1299                 11010048: 67174400,
    1300                 12058624: 65796,
    1301                 13107200: 65792,
    1302                 14155776: 67109124,
    1303                 15204352: 67174660,
    1304                 16252928: 67108864,
    1305                 16777216: 67174656,
    1306                 17825792: 65540,
    1307                 18874368: 65536,
    1308                 19922944: 67109120,
    1309                 20971520: 256,
    1310                 22020096: 67174660,
    1311                 23068672: 67108868,
    1312                 24117248: 0,
    1313                 25165824: 67109124,
    1314                 26214400: 67108864,
    1315                 27262976: 4,
    1316                 28311552: 65792,
    1317                 29360128: 67174400,
    1318                 30408704: 260,
    1319                 31457280: 65796,
    1320                 32505856: 67174404,
    1321                 17301504: 67108864,
    1322                 18350080: 260,
    1323                 19398656: 67174656,
    1324                 20447232: 0,
    1325                 21495808: 65540,
    1326                 22544384: 67109120,
    1327                 23592960: 256,
    1328                 24641536: 67174404,
    1329                 25690112: 65536,
    1330                 26738688: 67174660,
    1331                 27787264: 65796,
    1332                 28835840: 67108868,
    1333                 29884416: 67109124,
    1334                 30932992: 67174400,
    1335                 31981568: 4,
    1336                 33030144: 65792
    1337             },
    1338             {
    1339                 "0": 2151682048,
    1340                 65536: 2147487808,
    1341                 131072: 4198464,
    1342                 196608: 2151677952,
    1343                 262144: 0,
    1344                 327680: 4198400,
    1345                 393216: 2147483712,
    1346                 458752: 4194368,
    1347                 524288: 2147483648,
    1348                 589824: 4194304,
    1349                 655360: 64,
    1350                 720896: 2147487744,
    1351                 786432: 2151678016,
    1352                 851968: 4160,
    1353                 917504: 4096,
    1354                 983040: 2151682112,
    1355                 32768: 2147487808,
    1356                 98304: 64,
    1357                 163840: 2151678016,
    1358                 229376: 2147487744,
    1359                 294912: 4198400,
    1360                 360448: 2151682112,
    1361                 425984: 0,
    1362                 491520: 2151677952,
    1363                 557056: 4096,
    1364                 622592: 2151682048,
    1365                 688128: 4194304,
    1366                 753664: 4160,
    1367                 819200: 2147483648,
    1368                 884736: 4194368,
    1369                 950272: 4198464,
    1370                 1015808: 2147483712,
    1371                 1048576: 4194368,
    1372                 1114112: 4198400,
    1373                 1179648: 2147483712,
    1374                 1245184: 0,
    1375                 1310720: 4160,
    1376                 1376256: 2151678016,
    1377                 1441792: 2151682048,
    1378                 1507328: 2147487808,
    1379                 1572864: 2151682112,
    1380                 1638400: 2147483648,
    1381                 1703936: 2151677952,
    1382                 1769472: 4198464,
    1383                 1835008: 2147487744,
    1384                 1900544: 4194304,
    1385                 1966080: 64,
    1386                 2031616: 4096,
    1387                 1081344: 2151677952,
    1388                 1146880: 2151682112,
    1389                 1212416: 0,
    1390                 1277952: 4198400,
    1391                 1343488: 4194368,
    1392                 1409024: 2147483648,
    1393                 1474560: 2147487808,
    1394                 1540096: 64,
    1395                 1605632: 2147483712,
    1396                 1671168: 4096,
    1397                 1736704: 2147487744,
    1398                 1802240: 2151678016,
    1399                 1867776: 4160,
    1400                 1933312: 2151682048,
    1401                 1998848: 4194304,
    1402                 2064384: 4198464
    1403             },
    1404             {
    1405                 "0": 128,
    1406                 4096: 17039360,
    1407                 8192: 262144,
    1408                 12288: 536870912,
    1409                 16384: 537133184,
    1410                 20480: 16777344,
    1411                 24576: 553648256,
    1412                 28672: 262272,
    1413                 32768: 16777216,
    1414                 36864: 537133056,
    1415                 40960: 536871040,
    1416                 45056: 553910400,
    1417                 49152: 553910272,
    1418                 53248: 0,
    1419                 57344: 17039488,
    1420                 61440: 553648128,
    1421                 2048: 17039488,
    1422                 6144: 553648256,
    1423                 10240: 128,
    1424                 14336: 17039360,
    1425                 18432: 262144,
    1426                 22528: 537133184,
    1427                 26624: 553910272,
    1428                 30720: 536870912,
    1429                 34816: 537133056,
    1430                 38912: 0,
    1431                 43008: 553910400,
    1432                 47104: 16777344,
    1433                 51200: 536871040,
    1434                 55296: 553648128,
    1435                 59392: 16777216,
    1436                 63488: 262272,
    1437                 65536: 262144,
    1438                 69632: 128,
    1439                 73728: 536870912,
    1440                 77824: 553648256,
    1441                 81920: 16777344,
    1442                 86016: 553910272,
    1443                 90112: 537133184,
    1444                 94208: 16777216,
    1445                 98304: 553910400,
    1446                 102400: 553648128,
    1447                 106496: 17039360,
    1448                 110592: 537133056,
    1449                 114688: 262272,
    1450                 118784: 536871040,
    1451                 122880: 0,
    1452                 126976: 17039488,
    1453                 67584: 553648256,
    1454                 71680: 16777216,
    1455                 75776: 17039360,
    1456                 79872: 537133184,
    1457                 83968: 536870912,
    1458                 88064: 17039488,
    1459                 92160: 128,
    1460                 96256: 553910272,
    1461                 100352: 262272,
    1462                 104448: 553910400,
    1463                 108544: 0,
    1464                 112640: 553648128,
    1465                 116736: 16777344,
    1466                 120832: 262144,
    1467                 124928: 537133056,
    1468                 129024: 536871040
    1469             },
    1470             {
    1471                 "0": 268435464,
    1472                 256: 8192,
    1473                 512: 270532608,
    1474                 768: 270540808,
    1475                 1024: 268443648,
    1476                 1280: 2097152,
    1477                 1536: 2097160,
    1478                 1792: 268435456,
    1479                 2048: 0,
    1480                 2304: 268443656,
    1481                 2560: 2105344,
    1482                 2816: 8,
    1483                 3072: 270532616,
    1484                 3328: 2105352,
    1485                 3584: 8200,
    1486                 3840: 270540800,
    1487                 128: 270532608,
    1488                 384: 270540808,
    1489                 640: 8,
    1490                 896: 2097152,
    1491                 1152: 2105352,
    1492                 1408: 268435464,
    1493                 1664: 268443648,
    1494                 1920: 8200,
    1495                 2176: 2097160,
    1496                 2432: 8192,
    1497                 2688: 268443656,
    1498                 2944: 270532616,
    1499                 3200: 0,
    1500                 3456: 270540800,
    1501                 3712: 2105344,
    1502                 3968: 268435456,
    1503                 4096: 268443648,
    1504                 4352: 270532616,
    1505                 4608: 270540808,
    1506                 4864: 8200,
    1507                 5120: 2097152,
    1508                 5376: 268435456,
    1509                 5632: 268435464,
    1510                 5888: 2105344,
    1511                 6144: 2105352,
    1512                 6400: 0,
    1513                 6656: 8,
    1514                 6912: 270532608,
    1515                 7168: 8192,
    1516                 7424: 268443656,
    1517                 7680: 270540800,
    1518                 7936: 2097160,
    1519                 4224: 8,
    1520                 4480: 2105344,
    1521                 4736: 2097152,
    1522                 4992: 268435464,
    1523                 5248: 268443648,
    1524                 5504: 8200,
    1525                 5760: 270540808,
    1526                 6016: 270532608,
    1527                 6272: 270540800,
    1528                 6528: 270532616,
    1529                 6784: 8192,
    1530                 7040: 2105352,
    1531                 7296: 2097160,
    1532                 7552: 0,
    1533                 7808: 268435456,
    1534                 8064: 268443656
    1535             },
    1536             {
    1537                 "0": 1048576,
    1538                 16: 33555457,
    1539                 32: 1024,
    1540                 48: 1049601,
    1541                 64: 34604033,
    1542                 80: 0,
    1543                 96: 1,
    1544                 112: 34603009,
    1545                 128: 33555456,
    1546                 144: 1048577,
    1547                 160: 33554433,
    1548                 176: 34604032,
    1549                 192: 34603008,
    1550                 208: 1025,
    1551                 224: 1049600,
    1552                 240: 33554432,
    1553                 8: 34603009,
    1554                 24: 0,
    1555                 40: 33555457,
    1556                 56: 34604032,
    1557                 72: 1048576,
    1558                 88: 33554433,
    1559                 104: 33554432,
    1560                 120: 1025,
    1561                 136: 1049601,
    1562                 152: 33555456,
    1563                 168: 34603008,
    1564                 184: 1048577,
    1565                 200: 1024,
    1566                 216: 34604033,
    1567                 232: 1,
    1568                 248: 1049600,
    1569                 256: 33554432,
    1570                 272: 1048576,
    1571                 288: 33555457,
    1572                 304: 34603009,
    1573                 320: 1048577,
    1574                 336: 33555456,
    1575                 352: 34604032,
    1576                 368: 1049601,
    1577                 384: 1025,
    1578                 400: 34604033,
    1579                 416: 1049600,
    1580                 432: 1,
    1581                 448: 0,
    1582                 464: 34603008,
    1583                 480: 33554433,
    1584                 496: 1024,
    1585                 264: 1049600,
    1586                 280: 33555457,
    1587                 296: 34603009,
    1588                 312: 1,
    1589                 328: 33554432,
    1590                 344: 1048576,
    1591                 360: 1025,
    1592                 376: 34604032,
    1593                 392: 33554433,
    1594                 408: 34603008,
    1595                 424: 0,
    1596                 440: 34604033,
    1597                 456: 1049601,
    1598                 472: 1024,
    1599                 488: 33555456,
    1600                 504: 1048577
    1601             },
    1602             {
    1603                 "0": 134219808,
    1604                 1: 131072,
    1605                 2: 134217728,
    1606                 3: 32,
    1607                 4: 131104,
    1608                 5: 134350880,
    1609                 6: 134350848,
    1610                 7: 2048,
    1611                 8: 134348800,
    1612                 9: 134219776,
    1613                 10: 133120,
    1614                 11: 134348832,
    1615                 12: 2080,
    1616                 13: 0,
    1617                 14: 134217760,
    1618                 15: 133152,
    1619                 2147483648: 2048,
    1620                 2147483649: 134350880,
    1621                 2147483650: 134219808,
    1622                 2147483651: 134217728,
    1623                 2147483652: 134348800,
    1624                 2147483653: 133120,
    1625                 2147483654: 133152,
    1626                 2147483655: 32,
    1627                 2147483656: 134217760,
    1628                 2147483657: 2080,
    1629                 2147483658: 131104,
    1630                 2147483659: 134350848,
    1631                 2147483660: 0,
    1632                 2147483661: 134348832,
    1633                 2147483662: 134219776,
    1634                 2147483663: 131072,
    1635                 16: 133152,
    1636                 17: 134350848,
    1637                 18: 32,
    1638                 19: 2048,
    1639                 20: 134219776,
    1640                 21: 134217760,
    1641                 22: 134348832,
    1642                 23: 131072,
    1643                 24: 0,
    1644                 25: 131104,
    1645                 26: 134348800,
    1646                 27: 134219808,
    1647                 28: 134350880,
    1648                 29: 133120,
    1649                 30: 2080,
    1650                 31: 134217728,
    1651                 2147483664: 131072,
    1652                 2147483665: 2048,
    1653                 2147483666: 134348832,
    1654                 2147483667: 133152,
    1655                 2147483668: 32,
    1656                 2147483669: 134348800,
    1657                 2147483670: 134217728,
    1658                 2147483671: 134219808,
    1659                 2147483672: 134350880,
    1660                 2147483673: 134217760,
    1661                 2147483674: 134219776,
    1662                 2147483675: 0,
    1663                 2147483676: 133120,
    1664                 2147483677: 2080,
    1665                 2147483678: 131104,
    1666                 2147483679: 134350848
    1667             }],
    1668         t = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],
    1669         m = g.DES = e.extend({
    1670             _7: function () {
    1671                 for (var b = this._13.words, c = [], a = 0; 56 > a; a++) {
    1672                     var f = q[a] - 1;
    1673                     c[a] = b[f >>> 5] >>> 31 - f % 32 & 1
    1674                 }
    1675                 b = this._25 = [];
    1676                 for (f = 0; 16 > f; f++) {
    1677                     for (var d = b[f] = [], e = r[f], a = 0; 24 > a; a++) d[a / 6 | 0] |= c[(p[a] - 1 + e) % 28] << 31 - a % 6,
    1678                         d[4 + (a / 6 | 0)] |= c[28 + (p[a + 24] - 1 + e) % 28] << 31 - a % 6;
    1679                     d[0] = d[0] << 1 | d[0] >>> 31;
    1680                     for (a = 1; 7 > a; a++) d[a] >>>= 4 * (a - 1) + 3;
    1681                     d[7] = d[7] << 5 | d[7] >>> 27
    1682                 }
    1683                 c = this._28 = [];
    1684                 for (a = 0; 16 > a; a++) c[a] = b[15 - a]
    1685             },
    1686             encryptBlock: function (b, c) {
    1687                 this._6(b, c, this._25)
    1688             },
    1689             decryptBlock: function (b, c) {
    1690                 this._6(b, c, this._28)
    1691             },
    1692             _6: function (b, c, a) {
    1693                 this._0 = b[c];
    1694                 this._1 = b[c + 1];
    1695                 j.call(this, 4, 252645135);
    1696                 j.call(this, 16, 65535);
    1697                 l.call(this, 2, 858993459);
    1698                 l.call(this, 8, 16711935);
    1699                 j.call(this, 1, 1431655765);
    1700                 for (var f = 0; 16 > f; f++) {
    1701                     for (var d = a[f], e = this._0, h = this._1, g = 0, k = 0; 8 > k; k++) g |= s[k][((h ^ d[k]) & t[k]) >>> 0];
    1702                     this._0 = h;
    1703                     this._1 = e ^ g
    1704                 }
    1705                 a = this._0;
    1706                 this._0 = this._1;
    1707                 this._1 = a;
    1708                 j.call(this, 1, 1431655765);
    1709                 l.call(this, 8, 16711935);
    1710                 l.call(this, 2, 858993459);
    1711                 j.call(this, 16, 65535);
    1712                 j.call(this, 4, 252645135);
    1713                 b[c] = this._0;
    1714                 b[c + 1] = this._1
    1715             },
    1716             keySize: 2,
    1717             ivSize: 2,
    1718             blockSize: 2
    1719         });
    1720     h.DES = e._5(m);
    1721     g = g.TripleDES = e.extend({
    1722         _7: function () {
    1723             var b = this._13.words;
    1724             this._24 = m.createEncryptor(n.create(b.slice(0, 2)));
    1725             this._21 = m.createEncryptor(n.create(b.slice(2, 4)));
    1726             this._22 = m.createEncryptor(n.create(b.slice(4, 6)))
    1727         },
    1728         encryptBlock: function (b, c) {
    1729             this._24.encryptBlock(b, c);
    1730             this._21.decryptBlock(b, c);
    1731             this._22.encryptBlock(b, c)
    1732         },
    1733         decryptBlock: function (b, c) {
    1734             this._22.decryptBlock(b, c);
    1735             this._21.encryptBlock(b, c);
    1736             this._24.decryptBlock(b, c)
    1737         },
    1738         keySize: 6,
    1739         ivSize: 2,
    1740         blockSize: 2
    1741     });
    1742     h.TripleDES = e._5(g)
    1743 })();
    1744 const aes_server_key = "tGFsbXNwewZlcg==";
    1745 const aes_server_iv = "w9VydmVswewexbQ==";
    1746 const aes_client_key = "WksdsdflFweFZ==";
    1747 const aes_client_iv = "klsfw9nsp=";
    1748 const des_key = "ssfefwksdjskdsj==";
    1749 const des_iv = "skzlkpoi=";
    1750 const aes_local_key = 'emhlbnFpcGFsbWtleQ==';
    1751 const aes_local_iv = 'emhlbnFpcGFsbWl2';
    1752 var BASE64 = {
    1753     encrypt: function (text) {
    1754         var b = new Base64();
    1755         return b.encode(text)
    1756     },
    1757     decrypt: function (text) {
    1758         var b = new Base64();
    1759         return b.decode(text)
    1760     }
    1761 };
    1762 var DES = {
    1763     encrypt: function (text, key, iv) {
    1764         var secretkey = (CryptoJS.MD5(key).toString()).substr(0, 16);
    1765         var secretiv = (CryptoJS.MD5(iv).toString()).substr(24, 8);
    1766         secretkey = CryptoJS.enc.Utf8.parse(secretkey);
    1767         secretiv = CryptoJS.enc.Utf8.parse(secretiv);
    1768         var result = CryptoJS.DES.encrypt(text, secretkey, {
    1769             iv: secretiv,
    1770             mode: CryptoJS.mode.CBC,
    1771             padding: CryptoJS.pad.Pkcs7
    1772         });
    1773         return result.toString()
    1774     },
    1775     decrypt: function (text, key, iv) {
    1776         var secretkey = (CryptoJS.MD5(key).toString()).substr(0, 16);
    1777         var secretiv = (CryptoJS.MD5(iv).toString()).substr(24, 8);
    1778         secretkey = CryptoJS.enc.Utf8.parse(secretkey);
    1779         secretiv = CryptoJS.enc.Utf8.parse(secretiv);
    1780         var result = CryptoJS.DES.decrypt(text, secretkey, {
    1781             iv: secretiv,
    1782             mode: CryptoJS.mode.CBC,
    1783             padding: CryptoJS.pad.Pkcs7
    1784         });
    1785         return result.toString(CryptoJS.enc.Utf8)
    1786     }
    1787 };
    1788 var AES = {
    1789     encrypt: function (text, key, iv) {
    1790         var secretkey = (CryptoJS.MD5(key).toString()).substr(16, 16);
    1791         var secretiv = (CryptoJS.MD5(iv).toString()).substr(0, 16);
    1792         secretkey = CryptoJS.enc.Utf8.parse(secretkey);
    1793         secretiv = CryptoJS.enc.Utf8.parse(secretiv);
    1794         var result = CryptoJS.AES.encrypt(text, secretkey, {
    1795             iv: secretiv,
    1796             mode: CryptoJS.mode.CBC,
    1797             padding: CryptoJS.pad.Pkcs7
    1798         });
    1799         return result.toString()
    1800     },
    1801     decrypt: function (text, key, iv) {
    1802         var secretkey = (CryptoJS.MD5(key).toString()).substr(16, 16);
    1803         var secretiv = (CryptoJS.MD5(iv).toString()).substr(0, 16);
    1804         secretkey = CryptoJS.enc.Utf8.parse(secretkey);
    1805         secretiv = CryptoJS.enc.Utf8.parse(secretiv);
    1806         var result = CryptoJS.AES.decrypt(text, secretkey, {
    1807             iv: secretiv,
    1808             mode: CryptoJS.mode.CBC,
    1809             padding: CryptoJS.pad.Pkcs7
    1810         });
    1811         return result.toString(CryptoJS.enc.Utf8)
    1812     }
    1813 };
    1814 var localStorageUtil = {
    1815     save: function (name, value) {
    1816         var text = JSON.stringify(value);
    1817         text = BASE64.encrypt(text);
    1818         text = AES.encrypt(text, aes_local_key, aes_local_iv);
    1819         try {
    1820             localStorage.setItem(name, text)
    1821         } catch (oException) {
    1822             if (oException.name === 'QuotaExceededError') {
    1823                 console.log('超出本地存储限额!');
    1824                 localStorage.clear();
    1825                 localStorage.setItem(name, text)
    1826             }
    1827         }
    1828     },
    1829     check: function (name) {
    1830         return localStorage.getItem(name)
    1831     },
    1832     getValue: function (name) {
    1833         var text = localStorage.getItem(name);
    1834         var result = null;
    1835         if (text) {
    1836             text = AES.decrypt(text, aes_local_key, aes_local_iv);
    1837             text = BASE64.decrypt(text);
    1838             result = JSON.parse(text)
    1839         }
    1840         return result
    1841     },
    1842     remove: function (name) {
    1843         localStorage.removeItem(name)
    1844     }
    1845 };
    1846 
    1847 function getDataFromLocalStorage(key, period) {
    1848     if (typeof period === 'undefined') {
    1849         period = 0
    1850     }
    1851     var d = DES.encrypt(key);
    1852     d = BASE64.encrypt(key);
    1853     var data = localStorageUtil.getValue(key);
    1854     if (data) {
    1855         const time = data.time;
    1856         const current = new Date().getTime();
    1857         if (new Date().getHours() >= 0 && new Date().getHours() < 5 && period > 1) {
    1858             period = 1
    1859         }
    1860         if (current - (period * 60 * 60 * 1000) > time) {
    1861             data = null
    1862         }
    1863         if (new Date().getHours() >= 5 && new Date(time).getDate() !== new Date().getDate() && period === 24) {
    1864             data = null
    1865         }
    1866     }
    1867     return data
    1868 }
    1869 function ObjectSort(obj) {
    1870     var newObject = {};
    1871     Object.keys(obj).sort().map(function (key) {
    1872         newObject[key] = obj[key]
    1873     });
    1874     return newObject
    1875 }
    1876 function decodeData(data) {
    1877     data = AES.decrypt(data, aes_server_key, aes_server_iv);
    1878     data = DES.decrypt(data, des_key, des_iv);
    1879     data = BASE64.decrypt(data);
    1880     return data
    1881 }
    1882 var getParam = (function () {
    1883     function ObjectSort(obj) {
    1884         var newObject = {};
    1885         Object.keys(obj).sort().map(function (key) {
    1886             newObject[key] = obj[key]
    1887         });
    1888         return newObject
    1889     }
    1890 
    1891     return function (method, obj) {
    1892         var appId = '1a45f75b824b2dc628d5955356b5ef18';
    1893         var clienttype = 'WEB';
    1894         var timestamp = new Date().getTime();
    1895         var param = {
    1896             appId: appId,
    1897             method: method,
    1898             timestamp: timestamp,
    1899             clienttype: clienttype,
    1900             object: obj,
    1901             secret: hex_md5(appId + method + timestamp + clienttype + JSON.stringify(ObjectSort(obj)))
    1902         };
    1903         param = BASE64.encrypt(JSON.stringify(param));
    1904         return AES.encrypt(param, aes_client_key, aes_client_iv);
    1905     }
    1906 })();
    1907 
    1908 
    1909 function getEncryptedData(method, city, type, startTime, endTime) {
    1910     var param = {};
    1911     param.city = city;
    1912     param.type = type;
    1913     param.startTime = startTime;
    1914     param.endTime = endTime;
    1915     return getParam(method, param);
    1916 }

    第四步:安装 pip install PyExecJS,这个模块会去调用JavaScript的引擎去执行上面的js文件
    第五步:python代码
     1 import requests
     2 import execjs
     3 import json
     4 #使用python来模拟运行java的库, pip install PyExecJS,使用这个库之前,确定机器上有JS的运行环境
     5 # 创建一个执行js的对象
     6 node = execjs.get()
     7 method = 'GETCITYWEATHER'
     8 city = '北京'
     9 type = 'HOUR'
    10 start_time = '2018-01-25 00:00:00'
    11 end_time = '2018-01-25 23:00:00'
    12 
    13 # 执行js的代码,读取encryption.js,放入到内存中
    14 file = 'encryption.js'
    15 ctx = node.compile(open(file,encoding='utf-8').read())
    16 
    17 #获得参数
    18 js = 'getEncryptedData("{0}", "{1}", "{2}", "{3}", "{4}")'.format(method, city, type, start_time, end_time)
    19 params = ctx.eval(js)
    20 
    21 api = 'https://www.aqistudy.cn/apinew/aqistudyapi.php'
    22 response = requests.post(api, data={'d': params})
    23 
    24 js = 'decodeData("{0}")'.format(response.text)
    25 decrypted_data = ctx.eval(js)
    26 data = json.loads(decrypted_data)
    27 print(data)

    最后看到正常返回结果

  • 相关阅读:
    函数声明例子
    税收工资分级
    attribute函数
    输出结果有误
    scanf_s()函数与数组,运行环境VS2013
    格式化输出
    功能点介绍和用户场景
    第二次作业合作版
    word count
    第一次作业
  • 原文地址:https://www.cnblogs.com/zhongshuiping/p/9717550.html
Copyright © 2020-2023  润新知