├── README.md ├── demo.py └── encryption.js /README.md: -------------------------------------------------------------------------------- 1 | # AQIStudy 2 | 3 | AQIStudy 4 | -------------------------------------------------------------------------------- /demo.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import execjs 3 | import json 4 | 5 | # Init environment 6 | node = execjs.get() 7 | 8 | # Params 9 | method = 'GETCITYWEATHER' 10 | city = '北京' 11 | type = 'HOUR' 12 | start_time = '2018-01-25 00:00:00' 13 | end_time = '2018-01-25 23:00:00' 14 | 15 | # Compile javascript 16 | file = 'encryption.js' 17 | ctx = node.compile(open(file).read()) 18 | 19 | # Get params 20 | js = 'getEncryptedData("{0}", "{1}", "{2}", "{3}", "{4}")'.format(method, city, type, start_time, end_time) 21 | params = ctx.eval(js) 22 | 23 | # Get encrypted response text 24 | api = 'https://www.aqistudy.cn/apinew/aqistudyapi.php' 25 | response = requests.post(api, data={'d': params}) 26 | 27 | # Decode data 28 | js = 'decodeData("{0}")'.format(response.text) 29 | decrypted_data = ctx.eval(js) 30 | data = json.loads(decrypted_data) 31 | print(data) 32 | -------------------------------------------------------------------------------- /encryption.js: -------------------------------------------------------------------------------- 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(/\r\n/g, "\n"), 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 | } --------------------------------------------------------------------------------