目标网站: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)
最后看到正常返回结果