逆向研究
偏于简单的研究 但又很难写 大型爬虫
1.判决文书


navigator = {}; window = global; Date.prototype.format = function (fmt) { var o = { "M+": this.getMonth() + 1, //月份 "d+": this.getDate(), //日 "h+": this.getHours(), //小时 "m+": this.getMinutes(), //分 "s+": this.getSeconds(), //秒 "q+": Math.floor((this.getMonth() + 3) / 3), //季度 "S": this.getMilliseconds() //毫秒 }; if (/(y+)/.test(fmt)) { fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(fmt)) { fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length))); } } return fmt; } var CryptoJS = CryptoJS || function (y, h) { var j = {}, g = j.lib = {}, f = function () { }, z = g.Base = { extend: function (b) { f.prototype = this; var d = new f; b && d.mixIn(b); d.hasOwnProperty("init") || (d.init = function () { d.$super.init.apply(this, arguments) }); d.init.prototype = d; d.$super = this; return d }, create: function () { var b = this.extend(); b.init.apply(b, arguments); return b }, init: function () { }, mixIn: function (b) { for (var d in b) { b.hasOwnProperty(d) && (this[d] = b[d]) } b.hasOwnProperty("toString") && (this.toString = b.toString) }, clone: function () { return this.init.prototype.extend(this) } }, c = g.WordArray = z.extend({ init: function (b, d) { b = this.words = b || []; this.sigBytes = d != h ? d : 4 * b.length }, toString: function (b) { return (b || t).stringify(this) }, concat: function (d) { var n = this.words, b = d.words, l = this.sigBytes; d = d.sigBytes; this.clamp(); if (l % 4) { for (var e = 0; e < d; e++) { n[l + e >>> 2] |= (b[e >>> 2] >>> 24 - 8 * (e % 4) & 255) << 24 - 8 * ((l + e) % 4) } } else { if (65535 < b.length) { for (e = 0; e < d; e += 4) { n[l + e >>> 2] = b[e >>> 2] } } else { n.push.apply(n, b) } } this.sigBytes += d; return this }, clamp: function () { var b = this.words, d = this.sigBytes; b[d >>> 2] &= 4294967295 << 32 - 8 * (d % 4); b.length = y.ceil(d / 4) }, clone: function () { var b = z.clone.call(this); b.words = this.words.slice(0); return b }, random: function (d) { for (var e = [], b = 0; b < d; b += 4) { e.push(4294967296 * y.random() | 0) } return new c.init(e, d) } }), o = j.enc = {}, t = o.Hex = { stringify: function (d) { var n = d.words; d = d.sigBytes; for (var b = [], l = 0; l < d; l++) { var e = n[l >>> 2] >>> 24 - 8 * (l % 4) & 255; b.push((e >>> 4).toString(16)); b.push((e & 15).toString(16)) } return b.join("") }, parse: function (d) { for (var l = d.length, b = [], e = 0; e < l; e += 2) { b[e >>> 3] |= parseInt(d.substr(e, 2), 16) << 24 - 4 * (e % 8) } return new c.init(b, l / 2) } }, k = o.Latin1 = { stringify: function (d) { var l = d.words; d = d.sigBytes; for (var b = [], e = 0; e < d; e++) { b.push(String.fromCharCode(l[e >>> 2] >>> 24 - 8 * (e % 4) & 255)) } return b.join("") }, parse: function (d) { for (var l = d.length, b = [], e = 0; e < l; e++) { b[e >>> 2] |= (d.charCodeAt(e) & 255) << 24 - 8 * (e % 4) } return new c.init(b, l) } }, m = o.Utf8 = { stringify: function (b) { try { return decodeURIComponent(escape(k.stringify(b))) } catch (d) { throw Error("Malformed UTF-8 data") } }, parse: function (b) { return k.parse(unescape(encodeURIComponent(b))) } }, a = g.BufferedBlockAlgorithm = z.extend({ reset: function () { this._data = new c.init; this._nDataBytes = 0 }, _append: function (b) { "string" == typeof b && (b = m.parse(b)); this._data.concat(b); this._nDataBytes += b.sigBytes }, _process: function (n) { var s = this._data, l = s.words, q = s.sigBytes, p = this.blockSize, d = q / (4 * p), d = n ? y.ceil(d) : y.max((d | 0) - this._minBufferSize, 0); n = d * p; q = y.min(4 * n, q); if (n) { for (var r = 0; r < n; r += p) { this._doProcessBlock(l, r) } r = l.splice(0, n); s.sigBytes -= q } return new c.init(r, q) }, clone: function () { var b = z.clone.call(this); b._data = this._data.clone(); return b }, _minBufferSize: 0 }); g.Hasher = a.extend({ cfg: z.extend(), init: function (b) { this.cfg = this.cfg.extend(b); this.reset() }, reset: function () { a.reset.call(this); this._doReset() }, update: function (b) { this._append(b); this._process(); return this }, finalize: function (b) { b && this._append(b); return this._doFinalize() }, blockSize: 16, _createHelper: function (b) { return function (e, d) { return (new b.init(d)).finalize(e) } }, _createHmacHelper: function (b) { return function (e, d) { return (new i.HMAC.init(b, d)).finalize(e) } } }); var i = j.algo = {}; return j }(Math); (function () { var b = CryptoJS, a = b.lib.WordArray; b.enc.Base64 = { stringify: function (i) { var j = i.words, e = i.sigBytes, g = this._map; i.clamp(); i = []; for (var h = 0; h < e; h += 3) { for (var c = (j[h >>> 2] >>> 24 - 8 * (h % 4) & 255) << 16 | (j[h + 1 >>> 2] >>> 24 - 8 * ((h + 1) % 4) & 255) << 8 | j[h + 2 >>> 2] >>> 24 - 8 * ((h + 2) % 4) & 255, f = 0; 4 > f && h + 0.75 * f < e; f++) { i.push(g.charAt(c >>> 6 * (3 - f) & 63)) } } if (j = g.charAt(64)) { for (; i.length % 4;) { i.push(j) } } return i.join("") }, parse: function (j) { var k = j.length, i = this._map, g = i.charAt(64); g && (g = j.indexOf(g), -1 != g && (k = g)); for (var g = [], h = 0, e = 0; e < k; e++) { if (e % 4) { var f = i.indexOf(j.charAt(e - 1)) << 2 * (e % 4), c = i.indexOf(j.charAt(e)) >>> 6 - 2 * (e % 4); g[h >>> 2] |= (f | c) << 24 - 8 * (h % 4); h++ } } return a.create(g, h) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } })(); (function (m) { function f(l, r, n, s, d, q, p) { l = l + (r & n | ~r & s) + d + p; return (l << q | l >>> 32 - q) + r } function g(l, r, n, s, d, q, p) { l = l + (r & s | n & ~s) + d + p; return (l << q | l >>> 32 - q) + r } function e(l, r, n, s, d, q, p) { l = l + (r ^ n ^ s) + d + p; return (l << q | l >>> 32 - q) + r } function c(l, r, n, s, d, q, p) { l = l + (n ^ (r | ~s)) + d + p; return (l << q | l >>> 32 - q) + r } for (var o = CryptoJS, a = o.lib, j = a.WordArray, k = a.Hasher, a = o.algo, h = [], i = 0; 64 > i; i++) { h[i] = 4294967296 * m.abs(m.sin(i + 1)) | 0 } a = a.MD5 = k.extend({ _doReset: function () { this._hash = new j.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (J, T) { for (var V = 0; 16 > V; V++) { var U = T + V, N = J[U]; J[U] = (N << 8 | N >>> 24) & 16711935 | (N << 24 | N >>> 8) & 4278255360 } var V = this._hash.words, U = J[T + 0], N = J[T + 1], S = J[T + 2], F = J[T + 3], d = J[T + 4], L = J[T + 5], H = J[T + 6], n = J[T + 7], p = J[T + 8], E = J[T + 9], l = J[T + 10], b = J[T + 11], M = J[T + 12], K = J[T + 13], I = J[T + 14], G = J[T + 15], R = V[0], Q = V[1], P = V[2], O = V[3], R = f(R, Q, P, O, U, 7, h[0]), O = f(O, R, Q, P, N, 12, h[1]), P = f(P, O, R, Q, S, 17, h[2]), Q = f(Q, P, O, R, F, 22, h[3]), R = f(R, Q, P, O, d, 7, h[4]), O = f(O, R, Q, P, L, 12, h[5]), P = f(P, O, R, Q, H, 17, h[6]), Q = f(Q, P, O, R, n, 22, h[7]), R = f(R, Q, P, O, p, 7, h[8]), O = f(O, R, Q, P, E, 12, h[9]), P = f(P, O, R, Q, l, 17, h[10]), Q = f(Q, P, O, R, b, 22, h[11]), R = f(R, Q, P, O, M, 7, h[12]), O = f(O, R, Q, P, K, 12, h[13]), P = f(P, O, R, Q, I, 17, h[14]), Q = f(Q, P, O, R, G, 22, h[15]), R = g(R, Q, P, O, N, 5, h[16]), O = g(O, R, Q, P, H, 9, h[17]), P = g(P, O, R, Q, b, 14, h[18]), Q = g(Q, P, O, R, U, 20, h[19]), R = g(R, Q, P, O, L, 5, h[20]), O = g(O, R, Q, P, l, 9, h[21]), P = g(P, O, R, Q, G, 14, h[22]), Q = g(Q, P, O, R, d, 20, h[23]), R = g(R, Q, P, O, E, 5, h[24]), O = g(O, R, Q, P, I, 9, h[25]), P = g(P, O, R, Q, F, 14, h[26]), Q = g(Q, P, O, R, p, 20, h[27]), R = g(R, Q, P, O, K, 5, h[28]), O = g(O, R, Q, P, S, 9, h[29]), P = g(P, O, R, Q, n, 14, h[30]), Q = g(Q, P, O, R, M, 20, h[31]), R = e(R, Q, P, O, L, 4, h[32]), O = e(O, R, Q, P, p, 11, h[33]), P = e(P, O, R, Q, b, 16, h[34]), Q = e(Q, P, O, R, I, 23, h[35]), R = e(R, Q, P, O, N, 4, h[36]), O = e(O, R, Q, P, d, 11, h[37]), P = e(P, O, R, Q, n, 16, h[38]), Q = e(Q, P, O, R, l, 23, h[39]), R = e(R, Q, P, O, K, 4, h[40]), O = e(O, R, Q, P, U, 11, h[41]), P = e(P, O, R, Q, F, 16, h[42]), Q = e(Q, P, O, R, H, 23, h[43]), R = e(R, Q, P, O, E, 4, h[44]), O = e(O, R, Q, P, M, 11, h[45]), P = e(P, O, R, Q, G, 16, h[46]), Q = e(Q, P, O, R, S, 23, h[47]), R = c(R, Q, P, O, U, 6, h[48]), O = c(O, R, Q, P, n, 10, h[49]), P = c(P, O, R, Q, I, 15, h[50]), Q = c(Q, P, O, R, L, 21, h[51]), R = c(R, Q, P, O, M, 6, h[52]), O = c(O, R, Q, P, F, 10, h[53]), P = c(P, O, R, Q, l, 15, h[54]), Q = c(Q, P, O, R, N, 21, h[55]), R = c(R, Q, P, O, p, 6, h[56]), O = c(O, R, Q, P, G, 10, h[57]), P = c(P, O, R, Q, H, 15, h[58]), Q = c(Q, P, O, R, K, 21, h[59]), R = c(R, Q, P, O, d, 6, h[60]), O = c(O, R, Q, P, b, 10, h[61]), P = c(P, O, R, Q, S, 15, h[62]), Q = c(Q, P, O, R, E, 21, h[63]); V[0] = V[0] + R | 0; V[1] = V[1] + Q | 0; V[2] = V[2] + P | 0; V[3] = V[3] + O | 0 }, _doFinalize: function () { var l = this._data, p = l.words, n = 8 * this._nDataBytes, q = 8 * l.sigBytes; p[q >>> 5] |= 128 << 24 - q % 32; var d = m.floor(n / 4294967296); p[(q + 64 >>> 9 << 4) + 15] = (d << 8 | d >>> 24) & 16711935 | (d << 24 | d >>> 8) & 4278255360; p[(q + 64 >>> 9 << 4) + 14] = (n << 8 | n >>> 24) & 16711935 | (n << 24 | n >>> 8) & 4278255360; l.sigBytes = 4 * (p.length + 1); this._process(); l = this._hash; p = l.words; for (n = 0; 4 > n; n++) { q = p[n], p[n] = (q << 8 | q >>> 24) & 16711935 | (q << 24 | q >>> 8) & 4278255360 } return l }, clone: function () { var d = k.clone.call(this); d._hash = this._hash.clone(); return d } }); o.MD5 = k._createHelper(a); o.HmacMD5 = k._createHmacHelper(a) })(Math); (function () { var b = CryptoJS, a = b.lib, e = a.Base, f = a.WordArray, a = b.algo, c = a.EvpKDF = e.extend({ cfg: e.extend({keySize: 4, hasher: a.MD5, iterations: 1}), init: function (g) { this.cfg = this.cfg.extend(g) }, compute: function (k, i) { for (var h = this.cfg, o = h.hasher.create(), m = f.create(), q = m.words, g = h.keySize, h = h.iterations; q.length < g;) { j && o.update(j); var j = o.update(k).finalize(i); o.reset(); for (var n = 1; n < h; n++) { j = o.finalize(j), o.reset() } m.concat(j) } m.sigBytes = 4 * g; return m } }); b.EvpKDF = function (h, g, i) { return c.create(i).compute(h, g) } })(); CryptoJS.lib.Cipher || function (C) { var j = CryptoJS, m = j.lib, i = m.Base, h = m.WordArray, D = m.BufferedBlockAlgorithm, g = j.enc.Base64, A = j.algo.EvpKDF, B = m.Cipher = D.extend({ cfg: i.extend(), createEncryptor: function (b, c) { return this.create(this._ENC_XFORM_MODE, b, c) }, createDecryptor: function (b, c) { return this.create(this._DEC_XFORM_MODE, b, c) }, init: function (d, e, c) { this.cfg = this.cfg.extend(c); this._xformMode = d; this._key = e; this.reset() }, reset: function () { D.reset.call(this); this._doReset() }, process: function (b) { this._append(b); return this._process() }, finalize: function (b) { b && this._append(b); return this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (a) { return { encrypt: function (d, c, l) { return ("string" == typeof c ? o : y).encrypt(a, d, c, l) }, decrypt: function (d, c, l) { return ("string" == typeof c ? o : y).decrypt(a, d, c, l) } } } }); m.StreamCipher = B.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var t = j.mode = {}, z = function (l, n, d) { var q = this._iv; q ? this._iv = C : q = this._prevBlock; for (var p = 0; p < d; p++) { l[n + p] ^= q[p] } }, f = (m.BlockCipherMode = i.extend({ createEncryptor: function (b, c) { return this.Encryptor.create(b, c) }, createDecryptor: function (b, c) { return this.Decryptor.create(b, c) }, init: function (b, c) { this._cipher = b; this._iv = c } })).extend(); f.Encryptor = f.extend({ processBlock: function (e, l) { var d = this._cipher, n = d.blockSize; z.call(this, e, l, n); d.encryptBlock(e, l); this._prevBlock = e.slice(l, l + n) } }); f.Decryptor = f.extend({ processBlock: function (n, l) { var r = this._cipher, p = r.blockSize, q = n.slice(l, l + p); r.decryptBlock(n, l); z.call(this, n, l, p); this._prevBlock = q } }); t = t.CBC = f; f = (j.pad = {}).Pkcs7 = { pad: function (q, n) { for (var u = 4 * n, u = u - q.sigBytes % u, r = u << 24 | u << 16 | u << 8 | u, s = [], p = 0; p < u; p += 4) { s.push(r) } u = h.create(s, u); q.concat(u) }, unpad: function (b) { b.sigBytes -= b.words[b.sigBytes - 1 >>> 2] & 255 } }; m.BlockCipher = B.extend({ cfg: B.cfg.extend({mode: t, padding: f}), reset: function () { B.reset.call(this); var e = this.cfg, l = e.iv, e = e.mode; if (this._xformMode == this._ENC_XFORM_MODE) { var d = e.createEncryptor } else { d = e.createDecryptor, this._minBufferSize = 1 } this._mode = d.call(e, this, l && l.words) }, _doProcessBlock: function (b, d) { this._mode.processBlock(b, d) }, _doFinalize: function () { var b = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { b.pad(this._data, this.blockSize); var d = this._process(!0) } else { d = this._process(!0), b.unpad(d) } return d }, blockSize: 4 }); var k = m.CipherParams = i.extend({ init: function (b) { this.mixIn(b) }, toString: function (b) { return (b || this.formatter).stringify(this) } }), t = (j.format = {}).OpenSSL = { stringify: function (b) { var d = b.ciphertext; b = b.salt; return (b ? h.create([1398893684, 1701076831]).concat(b).concat(d) : d).toString(g) }, parse: function (e) { e = g.parse(e); var l = e.words; if (1398893684 == l[0] && 1701076831 == l[1]) { var d = h.create(l.slice(2, 4)); l.splice(0, 4); e.sigBytes -= 16 } return k.create({ciphertext: e, salt: d}) } }, y = m.SerializableCipher = i.extend({ cfg: i.extend({format: t}), encrypt: function (p, r, e, q) { q = this.cfg.extend(q); var n = p.createEncryptor(e, q); r = n.finalize(r); n = n.cfg; return k.create({ ciphertext: r, key: e, iv: n.iv, algorithm: p, mode: n.mode, padding: n.padding, blockSize: p.blockSize, formatter: q.format }) }, decrypt: function (l, p, d, n) { n = this.cfg.extend(n); p = this._parse(p, n.format); return l.createDecryptor(d, n).finalize(p.ciphertext) }, _parse: function (b, d) { return "string" == typeof b ? d.parse(b, this) : b } }), j = (j.kdf = {}).OpenSSL = { execute: function (l, p, e, n) { n || (n = h.random(8)); l = A.create({keySize: p + e}).compute(l, n); e = h.create(l.words.slice(p), 4 * e); l.sigBytes = 4 * p; return k.create({key: l, iv: e, salt: n}) } }, o = m.PasswordBasedCipher = y.extend({ cfg: y.cfg.extend({kdf: j}), encrypt: function (p, a, l, n) { n = this.cfg.extend(n); l = n.kdf.execute(l, p.keySize, p.ivSize); n.iv = l.iv; p = y.encrypt.call(this, p, a, l.key, n); p.mixIn(l); return p }, decrypt: function (p, a, l, n) { n = this.cfg.extend(n); a = this._parse(a, n.format); l = n.kdf.execute(l, p.keySize, p.ivSize, a.salt); n.iv = l.iv; return y.decrypt.call(this, p, a, l.key, n) } }) }(); (function () { function o(d, l) { var n = (this._lBlock >>> d ^ this._rBlock) & l; this._rBlock ^= n; this._lBlock ^= n << d } function g(d, l) { var n = (this._rBlock >>> d ^ this._lBlock) & l; this._lBlock ^= n; this._rBlock ^= n << d } var h = CryptoJS, f = h.lib, e = f.WordArray, f = f.BlockCipher, t = h.algo, c = [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], k = [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], m = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28], i = [{ "0": 8421888, 268435456: 32768, 536870912: 8421378, 805306368: 2, 1073741824: 512, 1342177280: 8421890, 1610612736: 8389122, 1879048192: 8388608, 2147483648: 514, 2415919104: 8389120, 2684354560: 33280, 2952790016: 8421376, 3221225472: 32770, 3489660928: 8388610, 3758096384: 0, 4026531840: 33282, 134217728: 0, 402653184: 8421890, 671088640: 33282, 939524096: 32768, 1207959552: 8421888, 1476395008: 512, 1744830464: 8421378, 2013265920: 2, 2281701376: 8389120, 2550136832: 33280, 2818572288: 8421376, 3087007744: 8389122, 3355443200: 8388610, 3623878656: 32770, 3892314112: 514, 4160749568: 8388608, 1: 32768, 268435457: 2, 536870913: 8421888, 805306369: 8388608, 1073741825: 8421378, 1342177281: 33280, 1610612737: 512, 1879048193: 8389122, 2147483649: 8421890, 2415919105: 8421376, 2684354561: 8388610, 2952790017: 33282, 3221225473: 514, 3489660929: 8389120, 3758096385: 32770, 4026531841: 0, 134217729: 8421890, 402653185: 8421376, 671088641: 8388608, 939524097: 512, 1207959553: 32768, 1476395009: 8388610, 1744830465: 2, 2013265921: 33282, 2281701377: 32770, 2550136833: 8389122, 2818572289: 514, 3087007745: 8421888, 3355443201: 8389120, 3623878657: 0, 3892314113: 33280, 4160749569: 8421378 }, { "0": 1074282512, 16777216: 16384, 33554432: 524288, 50331648: 1074266128, 67108864: 1073741840, 83886080: 1074282496, 100663296: 1073758208, 117440512: 16, 134217728: 540672, 150994944: 1073758224, 167772160: 1073741824, 184549376: 540688, 201326592: 524304, 218103808: 0, 234881024: 16400, 251658240: 1074266112, 8388608: 1073758208, 25165824: 540688, 41943040: 16, 58720256: 1073758224, 75497472: 1074282512, 92274688: 1073741824, 109051904: 524288, 125829120: 1074266128, 142606336: 524304, 159383552: 0, 176160768: 16384, 192937984: 1074266112, 209715200: 1073741840, 226492416: 540672, 243269632: 1074282496, 260046848: 16400, 268435456: 0, 285212672: 1074266128, 301989888: 1073758224, 318767104: 1074282496, 335544320: 1074266112, 352321536: 16, 369098752: 540688, 385875968: 16384, 402653184: 16400, 419430400: 524288, 436207616: 524304, 452984832: 1073741840, 469762048: 540672, 486539264: 1073758208, 503316480: 1073741824, 520093696: 1074282512, 276824064: 540688, 293601280: 524288, 310378496: 1074266112, 327155712: 16384, 343932928: 1073758208, 360710144: 1074282512, 377487360: 16, 394264576: 1073741824, 411041792: 1074282496, 427819008: 1073741840, 444596224: 1073758224, 461373440: 524304, 478150656: 0, 494927872: 16400, 511705088: 1074266128, 528482304: 540672 }, { "0": 260, 1048576: 0, 2097152: 67109120, 3145728: 65796, 4194304: 65540, 5242880: 67108868, 6291456: 67174660, 7340032: 67174400, 8388608: 67108864, 9437184: 67174656, 10485760: 65792, 11534336: 67174404, 12582912: 67109124, 13631488: 65536, 14680064: 4, 15728640: 256, 524288: 67174656, 1572864: 67174404, 2621440: 0, 3670016: 67109120, 4718592: 67108868, 5767168: 65536, 6815744: 65540, 7864320: 260, 8912896: 4, 9961472: 256, 11010048: 67174400, 12058624: 65796, 13107200: 65792, 14155776: 67109124, 15204352: 67174660, 16252928: 67108864, 16777216: 67174656, 17825792: 65540, 18874368: 65536, 19922944: 67109120, 20971520: 256, 22020096: 67174660, 23068672: 67108868, 24117248: 0, 25165824: 67109124, 26214400: 67108864, 27262976: 4, 28311552: 65792, 29360128: 67174400, 30408704: 260, 31457280: 65796, 32505856: 67174404, 17301504: 67108864, 18350080: 260, 19398656: 67174656, 20447232: 0, 21495808: 65540, 22544384: 67109120, 23592960: 256, 24641536: 67174404, 25690112: 65536, 26738688: 67174660, 27787264: 65796, 28835840: 67108868, 29884416: 67109124, 30932992: 67174400, 31981568: 4, 33030144: 65792 }, { "0": 2151682048, 65536: 2147487808, 131072: 4198464, 196608: 2151677952, 262144: 0, 327680: 4198400, 393216: 2147483712, 458752: 4194368, 524288: 2147483648, 589824: 4194304, 655360: 64, 720896: 2147487744, 786432: 2151678016, 851968: 4160, 917504: 4096, 983040: 2151682112, 32768: 2147487808, 98304: 64, 163840: 2151678016, 229376: 2147487744, 294912: 4198400, 360448: 2151682112, 425984: 0, 491520: 2151677952, 557056: 4096, 622592: 2151682048, 688128: 4194304, 753664: 4160, 819200: 2147483648, 884736: 4194368, 950272: 4198464, 1015808: 2147483712, 1048576: 4194368, 1114112: 4198400, 1179648: 2147483712, 1245184: 0, 1310720: 4160, 1376256: 2151678016, 1441792: 2151682048, 1507328: 2147487808, 1572864: 2151682112, 1638400: 2147483648, 1703936: 2151677952, 1769472: 4198464, 1835008: 2147487744, 1900544: 4194304, 1966080: 64, 2031616: 4096, 1081344: 2151677952, 1146880: 2151682112, 1212416: 0, 1277952: 4198400, 1343488: 4194368, 1409024: 2147483648, 1474560: 2147487808, 1540096: 64, 1605632: 2147483712, 1671168: 4096, 1736704: 2147487744, 1802240: 2151678016, 1867776: 4160, 1933312: 2151682048, 1998848: 4194304, 2064384: 4198464 }, { "0": 128, 4096: 17039360, 8192: 262144, 12288: 536870912, 16384: 537133184, 20480: 16777344, 24576: 553648256, 28672: 262272, 32768: 16777216, 36864: 537133056, 40960: 536871040, 45056: 553910400, 49152: 553910272, 53248: 0, 57344: 17039488, 61440: 553648128, 2048: 17039488, 6144: 553648256, 10240: 128, 14336: 17039360, 18432: 262144, 22528: 537133184, 26624: 553910272, 30720: 536870912, 34816: 537133056, 38912: 0, 43008: 553910400, 47104: 16777344, 51200: 536871040, 55296: 553648128, 59392: 16777216, 63488: 262272, 65536: 262144, 69632: 128, 73728: 536870912, 77824: 553648256, 81920: 16777344, 86016: 553910272, 90112: 537133184, 94208: 16777216, 98304: 553910400, 102400: 553648128, 106496: 17039360, 110592: 537133056, 114688: 262272, 118784: 536871040, 122880: 0, 126976: 17039488, 67584: 553648256, 71680: 16777216, 75776: 17039360, 79872: 537133184, 83968: 536870912, 88064: 17039488, 92160: 128, 96256: 553910272, 100352: 262272, 104448: 553910400, 108544: 0, 112640: 553648128, 116736: 16777344, 120832: 262144, 124928: 537133056, 129024: 536871040 }, { "0": 268435464, 256: 8192, 512: 270532608, 768: 270540808, 1024: 268443648, 1280: 2097152, 1536: 2097160, 1792: 268435456, 2048: 0, 2304: 268443656, 2560: 2105344, 2816: 8, 3072: 270532616, 3328: 2105352, 3584: 8200, 3840: 270540800, 128: 270532608, 384: 270540808, 640: 8, 896: 2097152, 1152: 2105352, 1408: 268435464, 1664: 268443648, 1920: 8200, 2176: 2097160, 2432: 8192, 2688: 268443656, 2944: 270532616, 3200: 0, 3456: 270540800, 3712: 2105344, 3968: 268435456, 4096: 268443648, 4352: 270532616, 4608: 270540808, 4864: 8200, 5120: 2097152, 5376: 268435456, 5632: 268435464, 5888: 2105344, 6144: 2105352, 6400: 0, 6656: 8, 6912: 270532608, 7168: 8192, 7424: 268443656, 7680: 270540800, 7936: 2097160, 4224: 8, 4480: 2105344, 4736: 2097152, 4992: 268435464, 5248: 268443648, 5504: 8200, 5760: 270540808, 6016: 270532608, 6272: 270540800, 6528: 270532616, 6784: 8192, 7040: 2105352, 7296: 2097160, 7552: 0, 7808: 268435456, 8064: 268443656 }, { "0": 1048576, 16: 33555457, 32: 1024, 48: 1049601, 64: 34604033, 80: 0, 96: 1, 112: 34603009, 128: 33555456, 144: 1048577, 160: 33554433, 176: 34604032, 192: 34603008, 208: 1025, 224: 1049600, 240: 33554432, 8: 34603009, 24: 0, 40: 33555457, 56: 34604032, 72: 1048576, 88: 33554433, 104: 33554432, 120: 1025, 136: 1049601, 152: 33555456, 168: 34603008, 184: 1048577, 200: 1024, 216: 34604033, 232: 1, 248: 1049600, 256: 33554432, 272: 1048576, 288: 33555457, 304: 34603009, 320: 1048577, 336: 33555456, 352: 34604032, 368: 1049601, 384: 1025, 400: 34604033, 416: 1049600, 432: 1, 448: 0, 464: 34603008, 480: 33554433, 496: 1024, 264: 1049600, 280: 33555457, 296: 34603009, 312: 1, 328: 33554432, 344: 1048576, 360: 1025, 376: 34604032, 392: 33554433, 408: 34603008, 424: 0, 440: 34604033, 456: 1049601, 472: 1024, 488: 33555456, 504: 1048577 }, { "0": 134219808, 1: 131072, 2: 134217728, 3: 32, 4: 131104, 5: 134350880, 6: 134350848, 7: 2048, 8: 134348800, 9: 134219776, 10: 133120, 11: 134348832, 12: 2080, 13: 0, 14: 134217760, 15: 133152, 2147483648: 2048, 2147483649: 134350880, 2147483650: 134219808, 2147483651: 134217728, 2147483652: 134348800, 2147483653: 133120, 2147483654: 133152, 2147483655: 32, 2147483656: 134217760, 2147483657: 2080, 2147483658: 131104, 2147483659: 134350848, 2147483660: 0, 2147483661: 134348832, 2147483662: 134219776, 2147483663: 131072, 16: 133152, 17: 134350848, 18: 32, 19: 2048, 20: 134219776, 21: 134217760, 22: 134348832, 23: 131072, 24: 0, 25: 131104, 26: 134348800, 27: 134219808, 28: 134350880, 29: 133120, 30: 2080, 31: 134217728, 2147483664: 131072, 2147483665: 2048, 2147483666: 134348832, 2147483667: 133152, 2147483668: 32, 2147483669: 134348800, 2147483670: 134217728, 2147483671: 134219808, 2147483672: 134350880, 2147483673: 134217760, 2147483674: 134219776, 2147483675: 0, 2147483676: 133120, 2147483677: 2080, 2147483678: 131104, 2147483679: 134350848 }], j = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679], a = t.DES = f.extend({ _doReset: function () { for (var n = this._key.words, q = [], u = 0; 56 > u; u++) { var s = c[u] - 1; q[u] = n[s >>> 5] >>> 31 - s % 32 & 1 } n = this._subKeys = []; for (s = 0; 16 > s; s++) { for (var r = n[s] = [], p = m[s], u = 0; 24 > u; u++) { r[u / 6 | 0] |= q[(k[u] - 1 + p) % 28] << 31 - u % 6, r[4 + (u / 6 | 0)] |= q[28 + (k[u + 24] - 1 + p) % 28] << 31 - u % 6 } r[0] = r[0] << 1 | r[0] >>> 31; for (u = 1; 7 > u; u++) { r[u] >>>= 4 * (u - 1) + 3 } r[7] = r[7] << 5 | r[7] >>> 27 } q = this._invSubKeys = []; for (u = 0; 16 > u; u++) { q[u] = n[15 - u] } }, encryptBlock: function (d, l) { this._doCryptBlock(d, l, this._subKeys) }, decryptBlock: function (d, l) { this._doCryptBlock(d, l, this._invSubKeys) }, _doCryptBlock: function (w, z, y) { this._lBlock = w[z]; this._rBlock = w[z + 1]; o.call(this, 4, 252645135); o.call(this, 16, 65535); g.call(this, 2, 858993459); g.call(this, 8, 16711935); o.call(this, 1, 1431655765); for (var x = 0; 16 > x; x++) { for (var v = y[x], u = this._lBlock, s = this._rBlock, l = 0, b = 0; 8 > b; b++) { l |= i[b][((s ^ v[b]) & j[b]) >>> 0] } this._lBlock = s; this._rBlock = u ^ l } y = this._lBlock; this._lBlock = this._rBlock; this._rBlock = y; o.call(this, 1, 1431655765); g.call(this, 8, 16711935); g.call(this, 2, 858993459); o.call(this, 16, 65535); o.call(this, 4, 252645135); w[z] = this._lBlock; w[z + 1] = this._rBlock }, keySize: 2, ivSize: 2, blockSize: 2 }); h.DES = f._createHelper(a); t = t.TripleDES = f.extend({ _doReset: function () { var d = this._key.words; this._des1 = a.createEncryptor(e.create(d.slice(0, 2))); this._des2 = a.createEncryptor(e.create(d.slice(2, 4))); this._des3 = a.createEncryptor(e.create(d.slice(4, 6))) }, encryptBlock: function (d, l) { this._des1.encryptBlock(d, l); this._des2.decryptBlock(d, l); this._des3.encryptBlock(d, l) }, decryptBlock: function (d, l) { this._des3.decryptBlock(d, l); this._des2.encryptBlock(d, l); this._des1.decryptBlock(d, l) }, keySize: 6, ivSize: 2, blockSize: 2 }); h.TripleDES = f._createHelper(t) })(); var DES3 = { iv: function () { return new Date().format("yyyyMMdd") }, encrypt: function (b, c, a) { if (c) { return (CryptoJS.TripleDES.encrypt(b, CryptoJS.enc.Utf8.parse(c), { iv: CryptoJS.enc.Utf8.parse(a || DES3.iv()), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })).toString() } return "" }, decrypt: function (b, c, a) { if (c) { return CryptoJS.enc.Utf8.stringify(CryptoJS.TripleDES.decrypt(b, CryptoJS.enc.Utf8.parse(c), { iv: CryptoJS.enc.Utf8.parse(a || DES3.iv()), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })).toString() } return "" } }; function C_RANDOM(size) { var str = "", arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; for (var i = 0; i < size; i++) { str += arr[Math.round(Math.random() * (arr.length - 1))]; } return str; } function cipher() { var date = new Date(); var timestamp = date.getTime().toString(); var salt = C_RANDOM(24); var year = date.getFullYear().toString(); var month = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date .getMonth()).toString(); var day = (date.getDate() < 10 ? "0" + date.getDate() : date.getDate()) .toString(); var iv = year + month + day; var enc = DES3.encrypt(timestamp, salt, iv).toString(); var str = salt + iv + enc; var ciphertext = strTobinary(str); return ciphertext; } function strTobinary(str) { var result = []; var list = str.split(""); for (var i = 0; i < list.length; i++) { if (i != 0) { result.push(" "); } var item = list[i]; var binaryStr = item.charCodeAt().toString(2); result.push(binaryStr); } ; return result.join(""); } !function(t, e) { "function" == typeof define && define.amd ? define(["exports"], e) : e("object" == typeof exports && "string" != typeof exports.nodeName ? module.exports : t) }(this, function(t) { function e(t, e, i) { null != t && ("number" == typeof t ? this.fromNumber(t, e, i) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e)) } function i() { return new e(null) } function r(t, e, i, r, s, n) { for (; --n >= 0; ) { var o = e * this[t++] + i[r] + s; s = Math.floor(o / 67108864), i[r++] = 67108863 & o } return s } function s(t, e, i, r, s, n) { for (var o = 32767 & e, h = e >> 15; --n >= 0; ) { var a = 32767 & this[t] , u = this[t++] >> 15 , c = h * a + u * o; a = o * a + ((32767 & c) << 15) + i[r] + (1073741823 & s), s = (a >>> 30) + (c >>> 15) + h * u + (s >>> 30), i[r++] = 1073741823 & a } return s } function n(t, e, i, r, s, n) { for (var o = 16383 & e, h = e >> 14; --n >= 0; ) { var a = 16383 & this[t] , u = this[t++] >> 14 , c = h * a + u * o; a = o * a + ((16383 & c) << 14) + i[r] + s, s = (a >> 28) + (c >> 14) + h * u, i[r++] = 268435455 & a } return s } function o(t) { return Be.charAt(t) } function h(t, e) { var i = Ke[t.charCodeAt(e)]; return null == i ? -1 : i } function a(t) { for (var e = this.t - 1; e >= 0; --e) t[e] = this[e]; t.t = this.t, t.s = this.s } function u(t) { this.t = 1, this.s = 0 > t ? -1 : 0, t > 0 ? this[0] = t : -1 > t ? this[0] = t + this.DV : this.t = 0 } function c(t) { var e = i(); return e.fromInt(t), e } function f(t, i) { var r; if (16 == i) r = 4; else if (8 == i) r = 3; else if (256 == i) r = 8; else if (2 == i) r = 1; else if (32 == i) r = 5; else { if (4 != i) return void this.fromRadix(t, i); r = 2 } this.t = 0, this.s = 0; for (var s = t.length, n = !1, o = 0; --s >= 0; ) { var a = 8 == r ? 255 & t[s] : h(t, s); 0 > a ? "-" == t.charAt(s) && (n = !0) : (n = !1, 0 == o ? this[this.t++] = a : o + r > this.DB ? (this[this.t - 1] |= (a & (1 << this.DB - o) - 1) << o, this[this.t++] = a >> this.DB - o) : this[this.t - 1] |= a << o, o += r, o >= this.DB && (o -= this.DB)) } 8 == r && 0 != (128 & t[0]) && (this.s = -1, o > 0 && (this[this.t - 1] |= (1 << this.DB - o) - 1 << o)), this.clamp(), n && e.ZERO.subTo(this, this) } function p() { for (var t = this.s & this.DM; this.t > 0 && this[this.t - 1] == t; ) --this.t } function l(t) { if (this.s < 0) return "-" + this.negate().toString(t); var e; if (16 == t) e = 4; else if (8 == t) e = 3; else if (2 == t) e = 1; else if (32 == t) e = 5; else { if (4 != t) return this.toRadix(t); e = 2 } var i, r = (1 << e) - 1, s = !1, n = "", h = this.t, a = this.DB - h * this.DB % e; if (h-- > 0) for (a < this.DB && (i = this[h] >> a) > 0 && (s = !0, n = o(i)); h >= 0; ) e > a ? (i = (this[h] & (1 << a) - 1) << e - a, i |= this[--h] >> (a += this.DB - e)) : (i = this[h] >> (a -= e) & r, 0 >= a && (a += this.DB, --h)), i > 0 && (s = !0), s && (n += o(i)); return s ? n : "0" } function d() { var t = i(); return e.ZERO.subTo(this, t), t } function g() { return this.s < 0 ? this.negate() : this } function m(t) { var e = this.s - t.s; if (0 != e) return e; var i = this.t; if (e = i - t.t, 0 != e) return this.s < 0 ? -e : e; for (; --i >= 0; ) if (0 != (e = this[i] - t[i])) return e; return 0 } function y(t) { var e, i = 1; return 0 != (e = t >>> 16) && (t = e, i += 16), 0 != (e = t >> 8) && (t = e, i += 8), 0 != (e = t >> 4) && (t = e, i += 4), 0 != (e = t >> 2) && (t = e, i += 2), 0 != (e = t >> 1) && (t = e, i += 1), i } function b() { return this.t <= 0 ? 0 : this.DB * (this.t - 1) + y(this[this.t - 1] ^ this.s & this.DM) } function T(t, e) { var i; for (i = this.t - 1; i >= 0; --i) e[i + t] = this[i]; for (i = t - 1; i >= 0; --i) e[i] = 0; e.t = this.t + t, e.s = this.s } function S(t, e) { for (var i = t; i < this.t; ++i) e[i - t] = this[i]; e.t = Math.max(this.t - t, 0), e.s = this.s } function R(t, e) { var i, r = t % this.DB, s = this.DB - r, n = (1 << s) - 1, o = Math.floor(t / this.DB), h = this.s << r & this.DM; for (i = this.t - 1; i >= 0; --i) e[i + o + 1] = this[i] >> s | h, h = (this[i] & n) << r; for (i = o - 1; i >= 0; --i) e[i] = 0; e[o] = h, e.t = this.t + o + 1, e.s = this.s, e.clamp() } function E(t, e) { e.s = this.s; var i = Math.floor(t / this.DB); if (i >= this.t) return void (e.t = 0); var r = t % this.DB , s = this.DB - r , n = (1 << r) - 1; e[0] = this[i] >> r; for (var o = i + 1; o < this.t; ++o) e[o - i - 1] |= (this[o] & n) << s, e[o - i] = this[o] >> r; r > 0 && (e[this.t - i - 1] |= (this.s & n) << s), e.t = this.t - i, e.clamp() } function D(t, e) { for (var i = 0, r = 0, s = Math.min(t.t, this.t); s > i; ) r += this[i] - t[i], e[i++] = r & this.DM, r >>= this.DB; if (t.t < this.t) { for (r -= t.s; i < this.t; ) r += this[i], e[i++] = r & this.DM, r >>= this.DB; r += this.s } else { for (r += this.s; i < t.t; ) r -= t[i], e[i++] = r & this.DM, r >>= this.DB; r -= t.s } e.s = 0 > r ? -1 : 0, -1 > r ? e[i++] = this.DV + r : r > 0 && (e[i++] = r), e.t = i, e.clamp() } function w(t, i) { var r = this.abs() , s = t.abs() , n = r.t; for (i.t = n + s.t; --n >= 0; ) i[n] = 0; for (n = 0; n < s.t; ++n) i[n + r.t] = r.am(0, s[n], i, n, 0, r.t); i.s = 0, i.clamp(), this.s != t.s && e.ZERO.subTo(i, i) } function x(t) { for (var e = this.abs(), i = t.t = 2 * e.t; --i >= 0; ) t[i] = 0; for (i = 0; i < e.t - 1; ++i) { var r = e.am(i, e[i], t, 2 * i, 0, 1); (t[i + e.t] += e.am(i + 1, 2 * e[i], t, 2 * i + 1, r, e.t - i - 1)) >= e.DV && (t[i + e.t] -= e.DV, t[i + e.t + 1] = 1) } t.t > 0 && (t[t.t - 1] += e.am(i, e[i], t, 2 * i, 0, 1)), t.s = 0, t.clamp() } function B(t, r, s) { var n = t.abs(); if (!(n.t <= 0)) { var o = this.abs(); if (o.t < n.t) return null != r && r.fromInt(0), void (null != s && this.copyTo(s)); null == s && (s = i()); var h = i() , a = this.s , u = t.s , c = this.DB - y(n[n.t - 1]); c > 0 ? (n.lShiftTo(c, h), o.lShiftTo(c, s)) : (n.copyTo(h), o.copyTo(s)); var f = h.t , p = h[f - 1]; if (0 != p) { var l = p * (1 << this.F1) + (f > 1 ? h[f - 2] >> this.F2 : 0) , d = this.FV / l , g = (1 << this.F1) / l , m = 1 << this.F2 , v = s.t , b = v - f , T = null == r ? i() : r; for (h.dlShiftTo(b, T), s.compareTo(T) >= 0 && (s[s.t++] = 1, s.subTo(T, s)), e.ONE.dlShiftTo(f, T), T.subTo(h, h); h.t < f; ) h[h.t++] = 0; for (; --b >= 0; ) { var S = s[--v] == p ? this.DM : Math.floor(s[v] * d + (s[v - 1] + m) * g); if ((s[v] += h.am(0, S, s, b, 0, f)) < S) for (h.dlShiftTo(b, T), s.subTo(T, s); s[v] < --S; ) s.subTo(T, s) } null != r && (s.drShiftTo(f, r), a != u && e.ZERO.subTo(r, r)), s.t = f, s.clamp(), c > 0 && s.rShiftTo(c, s), 0 > a && e.ZERO.subTo(s, s) } } } function K(t) { var r = i(); return this.abs().divRemTo(t, null, r), this.s < 0 && r.compareTo(e.ZERO) > 0 && t.subTo(r, r), r } function A(t) { this.m = t } function U(t) { return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t } function O(t) { return t } function V(t) { t.divRemTo(this.m, null, t) } function N(t, e, i) { t.multiplyTo(e, i), this.reduce(i) } function J(t, e) { t.squareTo(e), this.reduce(e) } function I() { if (this.t < 1) return 0; var t = this[0]; if (0 == (1 & t)) return 0; var e = 3 & t; return e = e * (2 - (15 & t) * e) & 15, e = e * (2 - (255 & t) * e) & 255, e = e * (2 - ((65535 & t) * e & 65535)) & 65535, e = e * (2 - t * e % this.DV) % this.DV, e > 0 ? this.DV - e : -e } function P(t) { this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t } function M(t) { var r = i(); return t.abs().dlShiftTo(this.m.t, r), r.divRemTo(this.m, null, r), t.s < 0 && r.compareTo(e.ZERO) > 0 && this.m.subTo(r, r), r } function L(t) { var e = i(); return t.copyTo(e), this.reduce(e), e } function q(t) { for (; t.t <= this.mt2; ) t[t.t++] = 0; for (var e = 0; e < this.m.t; ++e) { var i = 32767 & t[e] , r = i * this.mpl + ((i * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM; for (i = e + this.m.t, t[i] += this.m.am(0, r, t, e, 0, this.m.t); t[i] >= t.DV; ) t[i] -= t.DV, t[++i]++ } t.clamp(), t.drShiftTo(this.m.t, t), t.compareTo(this.m) >= 0 && t.subTo(this.m, t) } function C(t, e) { t.squareTo(e), this.reduce(e) } function H(t, e, i) { t.multiplyTo(e, i), this.reduce(i) } function j() { return 0 == (this.t > 0 ? 1 & this[0] : this.s) } function k(t, r) { if (t > 4294967295 || 1 > t) return e.ONE; var s = i() , n = i() , o = r.convert(this) , h = y(t) - 1; for (o.copyTo(s); --h >= 0; ) if (r.sqrTo(s, n), (t & 1 << h) > 0) r.mulTo(n, o, s); else { var a = s; s = n, n = a } return r.revert(s) } function F(t, e) { var i; return i = 256 > t || e.isEven() ? new A(e) : new P(e), this.exp(t, i) } // Copyright (c) 2005-2009 Tom Wu // All Rights Reserved. // See "LICENSE" for details. function _() { var t = i(); return this.copyTo(t), t } function z() { if (this.s < 0) { if (1 == this.t) return this[0] - this.DV; if (0 == this.t) return -1 } else { if (1 == this.t) return this[0]; if (0 == this.t) return 0 } return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0] } function Z() { return 0 == this.t ? this.s : this[0] << 24 >> 24 } function G() { return 0 == this.t ? this.s : this[0] << 16 >> 16 } function $(t) { return Math.floor(Math.LN2 * this.DB / Math.log(t)) } function Y() { return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this[0] <= 0 ? 0 : 1 } function W(t) { if (null == t && (t = 10), 0 == this.signum() || 2 > t || t > 36) return "0"; var e = this.chunkSize(t) , r = Math.pow(t, e) , s = c(r) , n = i() , o = i() , h = ""; for (this.divRemTo(s, n, o); n.signum() > 0; ) h = (r + o.intValue()).toString(t).substr(1) + h, n.divRemTo(s, n, o); return o.intValue().toString(t) + h } function Q(t, i) { this.fromInt(0), null == i && (i = 10); for (var r = this.chunkSize(i), s = Math.pow(i, r), n = !1, o = 0, a = 0, u = 0; u < t.length; ++u) { var c = h(t, u); 0 > c ? "-" == t.charAt(u) && 0 == this.signum() && (n = !0) : (a = i * a + c, ++o >= r && (this.dMultiply(s), this.dAddOffset(a, 0), o = 0, a = 0)) } o > 0 && (this.dMultiply(Math.pow(i, o)), this.dAddOffset(a, 0)), n && e.ZERO.subTo(this, this) } function X(t, i, r) { if ("number" == typeof i) if (2 > t) this.fromInt(1); else for (this.fromNumber(t, r), this.testBit(t - 1) || this.bitwiseTo(e.ONE.shiftLeft(t - 1), ht, this), this.isEven() && this.dAddOffset(1, 0); !this.isProbablePrime(i); ) this.dAddOffset(2, 0), this.bitLength() > t && this.subTo(e.ONE.shiftLeft(t - 1), this); else { var s = new Array , n = 7 & t; s.length = (t >> 3) + 1, i.nextBytes(s), n > 0 ? s[0] &= (1 << n) - 1 : s[0] = 0, this.fromString(s, 256) } } function tt() { var t = this.t , e = new Array; e[0] = this.s; var i, r = this.DB - t * this.DB % 8, s = 0; if (t-- > 0) for (r < this.DB && (i = this[t] >> r) != (this.s & this.DM) >> r && (e[s++] = i | this.s << this.DB - r); t >= 0; ) 8 > r ? (i = (this[t] & (1 << r) - 1) << 8 - r, i |= this[--t] >> (r += this.DB - 8)) : (i = this[t] >> (r -= 8) & 255, 0 >= r && (r += this.DB, --t)), 0 != (128 & i) && (i |= -256), 0 == s && (128 & this.s) != (128 & i) && ++s, (s > 0 || i != this.s) && (e[s++] = i); return e } function et(t) { return 0 == this.compareTo(t) } function it(t) { return this.compareTo(t) < 0 ? this : t } function rt(t) { return this.compareTo(t) > 0 ? this : t } function st(t, e, i) { var r, s, n = Math.min(t.t, this.t); for (r = 0; n > r; ++r) i[r] = e(this[r], t[r]); if (t.t < this.t) { for (s = t.s & this.DM, r = n; r < this.t; ++r) i[r] = e(this[r], s); i.t = this.t } else { for (s = this.s & this.DM, r = n; r < t.t; ++r) i[r] = e(s, t[r]); i.t = t.t } i.s = e(this.s, t.s), i.clamp() } function nt(t, e) { return t & e } function ot(t) { var e = i(); return this.bitwiseTo(t, nt, e), e } function ht(t, e) { return t | e } function at(t) { var e = i(); return this.bitwiseTo(t, ht, e), e } function ut(t, e) { return t ^ e } function ct(t) { var e = i(); return this.bitwiseTo(t, ut, e), e } function ft(t, e) { return t & ~e } function pt(t) { var e = i(); return this.bitwiseTo(t, ft, e), e } function lt() { for (var t = i(), e = 0; e < this.t; ++e) t[e] = this.DM & ~this[e]; return t.t = this.t, t.s = ~this.s, t } function dt(t) { var e = i(); return 0 > t ? this.rShiftTo(-t, e) : this.lShiftTo(t, e), e } function gt(t) { var e = i(); return 0 > t ? this.lShiftTo(-t, e) : this.rShiftTo(t, e), e } function mt(t) { if (0 == t) return -1; var e = 0; return 0 == (65535 & t) && (t >>= 16, e += 16), 0 == (255 & t) && (t >>= 8, e += 8), 0 == (15 & t) && (t >>= 4, e += 4), 0 == (3 & t) && (t >>= 2, e += 2), 0 == (1 & t) && ++e, e } function yt() { for (var t = 0; t < this.t; ++t) if (0 != this[t]) return t * this.DB + mt(this[t]); return this.s < 0 ? this.t * this.DB : -1 } function vt(t) { for (var e = 0; 0 != t; ) t &= t - 1, ++e; return e } function bt() { for (var t = 0, e = this.s & this.DM, i = 0; i < this.t; ++i) t += vt(this[i] ^ e); return t } function Tt(t) { var e = Math.floor(t / this.DB); return e >= this.t ? 0 != this.s : 0 != (this[e] & 1 << t % this.DB) } function St(t, i) { var r = e.ONE.shiftLeft(t); return this.bitwiseTo(r, i, r), r } function Rt(t) { return this.changeBit(t, ht) } function Et(t) { return this.changeBit(t, ft) } function Dt(t) { return this.changeBit(t, ut) } function wt(t, e) { for (var i = 0, r = 0, s = Math.min(t.t, this.t); s > i; ) r += this[i] + t[i], e[i++] = r & this.DM, r >>= this.DB; if (t.t < this.t) { for (r += t.s; i < this.t; ) r += this[i], e[i++] = r & this.DM, r >>= this.DB; r += this.s } else { for (r += this.s; i < t.t; ) r += t[i], e[i++] = r & this.DM, r >>= this.DB; r += t.s } e.s = 0 > r ? -1 : 0, r > 0 ? e[i++] = r : -1 > r && (e[i++] = this.DV + r), e.t = i, e.clamp() } function xt(t) { var e = i(); return this.addTo(t, e), e } function Bt(t) { var e = i(); return this.subTo(t, e), e } function Kt(t) { var e = i(); return this.multiplyTo(t, e), e } function At() { var t = i(); return this.squareTo(t), t } function Ut(t) { var e = i(); return this.divRemTo(t, e, null), e } function Ot(t) { var e = i(); return this.divRemTo(t, null, e), e } function Vt(t) { var e = i() , r = i(); return this.divRemTo(t, e, r), new Array(e,r) } function Nt(t) { this[this.t] = this.am(0, t - 1, this, 0, 0, this.t), ++this.t, this.clamp() } function Jt(t, e) { if (0 != t) { for (; this.t <= e; ) this[this.t++] = 0; for (this[e] += t; this[e] >= this.DV; ) this[e] -= this.DV, ++e >= this.t && (this[this.t++] = 0), ++this[e] } } function It() {} function Pt(t) { return t } function Mt(t, e, i) { t.multiplyTo(e, i) } function Lt(t, e) { t.squareTo(e) } function qt(t) { return this.exp(t, new It) } function Ct(t, e, i) { var r = Math.min(this.t + t.t, e); for (i.s = 0, i.t = r; r > 0; ) i[--r] = 0; var s; for (s = i.t - this.t; s > r; ++r) i[r + this.t] = this.am(0, t[r], i, r, 0, this.t); for (s = Math.min(t.t, e); s > r; ++r) this.am(0, t[r], i, r, 0, e - r); i.clamp() } function Ht(t, e, i) { --e; var r = i.t = this.t + t.t - e; for (i.s = 0; --r >= 0; ) i[r] = 0; for (r = Math.max(e - this.t, 0); r < t.t; ++r) i[this.t + r - e] = this.am(e - r, t[r], i, 0, 0, this.t + r - e); i.clamp(), i.drShiftTo(1, i) } function jt(t) { this.r2 = i(), this.q3 = i(), e.ONE.dlShiftTo(2 * t.t, this.r2), this.mu = this.r2.divide(t), this.m = t } function kt(t) { if (t.s < 0 || t.t > 2 * this.m.t) return t.mod(this.m); if (t.compareTo(this.m) < 0) return t; var e = i(); return t.copyTo(e), this.reduce(e), e } function Ft(t) { return t } function _t(t) { for (t.drShiftTo(this.m.t - 1, this.r2), t.t > this.m.t + 1 && (t.t = this.m.t + 1, t.clamp()), this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3), this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); t.compareTo(this.r2) < 0; ) t.dAddOffset(1, this.m.t + 1); for (t.subTo(this.r2, t); t.compareTo(this.m) >= 0; ) t.subTo(this.m, t) } function zt(t, e) { t.squareTo(e), this.reduce(e) } function Zt(t, e, i) { t.multiplyTo(e, i), this.reduce(i) } function Gt(t, e) { var r, s, n = t.bitLength(), o = c(1); if (0 >= n) return o; r = 18 > n ? 1 : 48 > n ? 3 : 144 > n ? 4 : 768 > n ? 5 : 6, s = 8 > n ? new A(e) : e.isEven() ? new jt(e) : new P(e); var h = new Array , a = 3 , u = r - 1 , f = (1 << r) - 1; if (h[1] = s.convert(this), r > 1) { var p = i(); for (s.sqrTo(h[1], p); f >= a; ) h[a] = i(), s.mulTo(p, h[a - 2], h[a]), a += 2 } var l, d, g = t.t - 1, m = !0, v = i(); for (n = y(t[g]) - 1; g >= 0; ) { for (n >= u ? l = t[g] >> n - u & f : (l = (t[g] & (1 << n + 1) - 1) << u - n, g > 0 && (l |= t[g - 1] >> this.DB + n - u)), a = r; 0 == (1 & l); ) l >>= 1, --a; if ((n -= a) < 0 && (n += this.DB, --g), m) h[l].copyTo(o), m = !1; else { for (; a > 1; ) s.sqrTo(o, v), s.sqrTo(v, o), a -= 2; a > 0 ? s.sqrTo(o, v) : (d = o, o = v, v = d), s.mulTo(v, h[l], o) } for (; g >= 0 && 0 == (t[g] & 1 << n); ) s.sqrTo(o, v), d = o, o = v, v = d, --n < 0 && (n = this.DB - 1, --g) } return s.revert(o) } function $t(t) { var e = this.s < 0 ? this.negate() : this.clone() , i = t.s < 0 ? t.negate() : t.clone(); if (e.compareTo(i) < 0) { var r = e; e = i, i = r } var s = e.getLowestSetBit() , n = i.getLowestSetBit(); if (0 > n) return e; for (n > s && (n = s), n > 0 && (e.rShiftTo(n, e), i.rShiftTo(n, i)); e.signum() > 0; ) (s = e.getLowestSetBit()) > 0 && e.rShiftTo(s, e), (s = i.getLowestSetBit()) > 0 && i.rShiftTo(s, i), e.compareTo(i) >= 0 ? (e.subTo(i, e), e.rShiftTo(1, e)) : (i.subTo(e, i), i.rShiftTo(1, i)); return n > 0 && i.lShiftTo(n, i), i } function Yt(t) { if (0 >= t) return 0; var e = this.DV % t , i = this.s < 0 ? t - 1 : 0; if (this.t > 0) if (0 == e) i = this[0] % t; else for (var r = this.t - 1; r >= 0; --r) i = (e * i + this[r]) % t; return i } function Wt(t) { var i = t.isEven(); if (this.isEven() && i || 0 == t.signum()) return e.ZERO; for (var r = t.clone(), s = this.clone(), n = c(1), o = c(0), h = c(0), a = c(1); 0 != r.signum(); ) { for (; r.isEven(); ) r.rShiftTo(1, r), i ? (n.isEven() && o.isEven() || (n.addTo(this, n), o.subTo(t, o)), n.rShiftTo(1, n)) : o.isEven() || o.subTo(t, o), o.rShiftTo(1, o); for (; s.isEven(); ) s.rShiftTo(1, s), i ? (h.isEven() && a.isEven() || (h.addTo(this, h), a.subTo(t, a)), h.rShiftTo(1, h)) : a.isEven() || a.subTo(t, a), a.rShiftTo(1, a); r.compareTo(s) >= 0 ? (r.subTo(s, r), i && n.subTo(h, n), o.subTo(a, o)) : (s.subTo(r, s), i && h.subTo(n, h), a.subTo(o, a)) } return 0 != s.compareTo(e.ONE) ? e.ZERO : a.compareTo(t) >= 0 ? a.subtract(t) : a.signum() < 0 ? (a.addTo(t, a), a.signum() < 0 ? a.add(t) : a) : a } function Qt(t) { var e, i = this.abs(); if (1 == i.t && i[0] <= Ae[Ae.length - 1]) { for (e = 0; e < Ae.length; ++e) if (i[0] == Ae[e]) return !0; return !1 } if (i.isEven()) return !1; for (e = 1; e < Ae.length; ) { for (var r = Ae[e], s = e + 1; s < Ae.length && Ue > r; ) r *= Ae[s++]; for (r = i.modInt(r); s > e; ) if (r % Ae[e++] == 0) return !1 } return i.millerRabin(t) } function Xt(t) { var r = this.subtract(e.ONE) , s = r.getLowestSetBit(); if (0 >= s) return !1; var n = r.shiftRight(s); t = t + 1 >> 1, t > Ae.length && (t = Ae.length); for (var o = i(), h = 0; t > h; ++h) { o.fromInt(Ae[Math.floor(Math.random() * Ae.length)]); var a = o.modPow(n, this); if (0 != a.compareTo(e.ONE) && 0 != a.compareTo(r)) { for (var u = 1; u++ < s && 0 != a.compareTo(r); ) if (a = a.modPowInt(2, this), 0 == a.compareTo(e.ONE)) return !1; if (0 != a.compareTo(r)) return !1 } } return !0 } function te() { this.i = 0, this.j = 0, this.S = new Array } function ee(t) { var e, i, r; for (e = 0; 256 > e; ++e) this.S[e] = e; for (i = 0, e = 0; 256 > e; ++e) i = i + this.S[e] + t[e % t.length] & 255, r = this.S[e], this.S[e] = this.S[i], this.S[i] = r; this.i = 0, this.j = 0 } function ie() { var t; return this.i = this.i + 1 & 255, this.j = this.j + this.S[this.i] & 255, t = this.S[this.i], this.S[this.i] = this.S[this.j], this.S[this.j] = t, this.S[t + this.S[this.i] & 255] } function re() { return new te } function se() { if (null == Oe) { for (Oe = re(); Je > Ne; ) { var t = Math.floor(65536 * Math.random()); Ve[Ne++] = 255 & t } for (Oe.init(Ve), Ne = 0; Ne < Ve.length; ++Ne) Ve[Ne] = 0; Ne = 0 } return Oe.next() } function ne(t) { var e; for (e = 0; e < t.length; ++e) t[e] = se() } function oe() {} function he(t, i) { return new e(t,i) } function ae(t, i) { if (i < t.length + 11) return console.error("Message too long for RSA"), null; for (var r = new Array, s = t.length - 1; s >= 0 && i > 0; ) { var n = t.charCodeAt(s--); 128 > n ? r[--i] = n : n > 127 && 2048 > n ? (r[--i] = 63 & n | 128, r[--i] = n >> 6 | 192) : (r[--i] = 63 & n | 128, r[--i] = n >> 6 & 63 | 128, r[--i] = n >> 12 | 224) } r[--i] = 0; for (var o = new oe, h = new Array; i > 2; ) { for (h[0] = 0; 0 == h[0]; ) o.nextBytes(h); r[--i] = h[0] } return r[--i] = 2, r[--i] = 0, new e(r) } function ue() { this.n = null, this.e = 0, this.d = null, this.p = null, this.q = null, this.dmp1 = null, this.dmq1 = null, this.coeff = null } function ce(t, e) { null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = he(t, 16), this.e = parseInt(e, 16)) : console.error("Invalid RSA public key") } function fe(t) { return t.modPowInt(this.e, this.n) } function pe(t) { var e = ae(t, this.n.bitLength() + 7 >> 3); if (null == e) return null; var i = this.doPublic(e); if (null == i) return null; var r = i.toString(16); return 0 == (1 & r.length) ? r : "0" + r } function le(t, e) { for (var i = t.toByteArray(), r = 0; r < i.length && 0 == i[r]; ) ++r; if (i.length - r != e - 1 || 2 != i[r]) return null; for (++r; 0 != i[r]; ) if (++r >= i.length) return null; for (var s = ""; ++r < i.length; ) { var n = 255 & i[r]; 128 > n ? s += String.fromCharCode(n) : n > 191 && 224 > n ? (s += String.fromCharCode((31 & n) << 6 | 63 & i[r + 1]), ++r) : (s += String.fromCharCode((15 & n) << 12 | (63 & i[r + 1]) << 6 | 63 & i[r + 2]), r += 2) } return s } function de(t, e, i) { null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = he(t, 16), this.e = parseInt(e, 16), this.d = he(i, 16)) : console.error("Invalid RSA private key") } function ge(t, e, i, r, s, n, o, h) { null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = he(t, 16), this.e = parseInt(e, 16), this.d = he(i, 16), this.p = he(r, 16), this.q = he(s, 16), this.dmp1 = he(n, 16), this.dmq1 = he(o, 16), this.coeff = he(h, 16)) : console.error("Invalid RSA private key") } function me(t, i) { var r = new oe , s = t >> 1; this.e = parseInt(i, 16); for (var n = new e(i,16); ; ) { for (; this.p = new e(t - s,1,r), 0 != this.p.subtract(e.ONE).gcd(n).compareTo(e.ONE) || !this.p.isProbablePrime(10); ) ; for (; this.q = new e(s,1,r), 0 != this.q.subtract(e.ONE).gcd(n).compareTo(e.ONE) || !this.q.isProbablePrime(10); ) ; if (this.p.compareTo(this.q) <= 0) { var o = this.p; this.p = this.q, this.q = o } var h = this.p.subtract(e.ONE) , a = this.q.subtract(e.ONE) , u = h.multiply(a); if (0 == u.gcd(n).compareTo(e.ONE)) { this.n = this.p.multiply(this.q), this.d = n.modInverse(u), this.dmp1 = this.d.mod(h), this.dmq1 = this.d.mod(a), this.coeff = this.q.modInverse(this.p); break } } } function ye(t) { if (null == this.p || null == this.q) return t.modPow(this.d, this.n); for (var e = t.mod(this.p).modPow(this.dmp1, this.p), i = t.mod(this.q).modPow(this.dmq1, this.q); e.compareTo(i) < 0; ) e = e.add(this.p); return e.subtract(i).multiply(this.coeff).mod(this.p).multiply(this.q).add(i) } function ve(t) { var e = he(t, 16) , i = this.doPrivate(e); return null == i ? null : le(i, this.n.bitLength() + 7 >> 3) } function be(t) { var e, i, r = ""; for (e = 0; e + 3 <= t.length; e += 3) i = parseInt(t.substring(e, e + 3), 16), r += Le.charAt(i >> 6) + Le.charAt(63 & i); for (e + 1 == t.length ? (i = parseInt(t.substring(e, e + 1), 16), r += Le.charAt(i << 2)) : e + 2 == t.length && (i = parseInt(t.substring(e, e + 2), 16), r += Le.charAt(i >> 2) + Le.charAt((3 & i) << 4)); (3 & r.length) > 0; ) r += qe; return r } function Te(t) { var e, i, r = "", s = 0; for (e = 0; e < t.length && t.charAt(e) != qe; ++e) v = Le.indexOf(t.charAt(e)), v < 0 || (0 == s ? (r += o(v >> 2), i = 3 & v, s = 1) : 1 == s ? (r += o(i << 2 | v >> 4), i = 15 & v, s = 2) : 2 == s ? (r += o(i), r += o(v >> 2), i = 3 & v, s = 3) : (r += o(i << 2 | v >> 4), r += o(15 & v), s = 0)); return 1 == s && (r += o(i << 2)), r } // Copyright (c) 2005 Tom Wu // All Rights Reserved. // See "LICENSE" for details. var Se, Re = 0xdeadbeefcafe, Ee = 15715070 == (16777215 & Re); Ee && "Microsoft Internet Explorer" == navigator.appName ? (e.prototype.am = s, Se = 30) : Ee && "Netscape" != navigator.appName ? (e.prototype.am = r, Se = 26) : (e.prototype.am = n, Se = 28), e.prototype.DB = Se, e.prototype.DM = (1 << Se) - 1, e.prototype.DV = 1 << Se; var De = 52; e.prototype.FV = Math.pow(2, De), e.prototype.F1 = De - Se, e.prototype.F2 = 2 * Se - De; var we, xe, Be = "0123456789abcdefghijklmnopqrstuvwxyz", Ke = new Array; for (we = "0".charCodeAt(0), xe = 0; 9 >= xe; ++xe) Ke[we++] = xe; for (we = "a".charCodeAt(0), xe = 10; 36 > xe; ++xe) Ke[we++] = xe; for (we = "A".charCodeAt(0), xe = 10; 36 > xe; ++xe) Ke[we++] = xe; A.prototype.convert = U, A.prototype.revert = O, A.prototype.reduce = V, A.prototype.mulTo = N, A.prototype.sqrTo = J, P.prototype.convert = M, P.prototype.revert = L, P.prototype.reduce = q, P.prototype.mulTo = H, P.prototype.sqrTo = C, e.prototype.copyTo = a, e.prototype.fromInt = u, e.prototype.fromString = f, e.prototype.clamp = p, e.prototype.dlShiftTo = T, e.prototype.drShiftTo = S, e.prototype.lShiftTo = R, e.prototype.rShiftTo = E, e.prototype.subTo = D, e.prototype.multiplyTo = w, e.prototype.squareTo = x, e.prototype.divRemTo = B, e.prototype.invDigit = I, e.prototype.isEven = j, e.prototype.exp = k, e.prototype.toString = l, e.prototype.negate = d, e.prototype.abs = g, e.prototype.compareTo = m, e.prototype.bitLength = b, e.prototype.mod = K, e.prototype.modPowInt = F, e.ZERO = c(0), e.ONE = c(1), It.prototype.convert = Pt, It.prototype.revert = Pt, It.prototype.mulTo = Mt, It.prototype.sqrTo = Lt, jt.prototype.convert = kt, jt.prototype.revert = Ft, jt.prototype.reduce = _t, jt.prototype.mulTo = Zt, jt.prototype.sqrTo = zt; var Ae = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997] , Ue = (1 << 26) / Ae[Ae.length - 1]; e.prototype.chunkSize = $, e.prototype.toRadix = W, e.prototype.fromRadix = Q, e.prototype.fromNumber = X, e.prototype.bitwiseTo = st, e.prototype.changeBit = St, e.prototype.addTo = wt, e.prototype.dMultiply = Nt, e.prototype.dAddOffset = Jt, e.prototype.multiplyLowerTo = Ct, e.prototype.multiplyUpperTo = Ht, e.prototype.modInt = Yt, e.prototype.millerRabin = Xt, e.prototype.clone = _, e.prototype.intValue = z, e.prototype.byteValue = Z, e.prototype.shortValue = G, e.prototype.signum = Y, e.prototype.toByteArray = tt, e.prototype.equals = et, e.prototype.min = it, e.prototype.max = rt, e.prototype.and = ot, e.prototype.or = at, e.prototype.xor = ct, e.prototype.andNot = pt, e.prototype.not = lt, e.prototype.shiftLeft = dt, e.prototype.shiftRight = gt, e.prototype.getLowestSetBit = yt, e.prototype.bitCount = bt, e.prototype.testBit = Tt, e.prototype.setBit = Rt, e.prototype.clearBit = Et, e.prototype.flipBit = Dt, e.prototype.add = xt, e.prototype.subtract = Bt, e.prototype.multiply = Kt, e.prototype.divide = Ut, e.prototype.remainder = Ot, e.prototype.divideAndRemainder = Vt, e.prototype.modPow = Gt, e.prototype.modInverse = Wt, e.prototype.pow = qt, e.prototype.gcd = $t, e.prototype.isProbablePrime = Qt, e.prototype.square = At, te.prototype.init = ee, te.prototype.next = ie; var Oe, Ve, Ne, Je = 256; if (null == Ve) { Ve = new Array, Ne = 0; var Ie; if (window.crypto && window.crypto.getRandomValues) { var Pe = new Uint32Array(256); for (window.crypto.getRandomValues(Pe), Ie = 0; Ie < Pe.length; ++Ie) Ve[Ne++] = 255 & Pe[Ie] } var Me = function(t) { if (this.count = this.count || 0, this.count >= 256 || Ne >= Je) return void (window.removeEventListener ? window.removeEventListener("mousemove", Me, !1) : window.detachEvent && window.detachEvent("onmousemove", Me)); try { var e = t.x + t.y; Ve[Ne++] = 255 & e, this.count += 1 } catch (i) {} }; window.addEventListener ? window.addEventListener("mousemove", Me, !1) : window.attachEvent && window.attachEvent("onmousemove", Me) } oe.prototype.nextBytes = ne, ue.prototype.doPublic = fe, ue.prototype.setPublic = ce, ue.prototype.encrypt = pe, ue.prototype.doPrivate = ye, ue.prototype.setPrivate = de, ue.prototype.setPrivateEx = ge, ue.prototype.generate = me, ue.prototype.decrypt = ve, // Copyright (c) 2011 Kevin M Burns Jr. // All Rights Reserved. // See "LICENSE" for details. // // Extension to jsbn which adds facilities for asynchronous RSA key generation // Primarily created to avoid execution timeout on mobile devices // // http://www-cs-students.stanford.edu/~tjw/jsbn/ // // --- function() { var t = function(t, r, s) { var n = new oe , o = t >> 1; this.e = parseInt(r, 16); var h = new e(r,16) , a = this , u = function() { var r = function() { if (a.p.compareTo(a.q) <= 0) { var t = a.p; a.p = a.q, a.q = t } var i = a.p.subtract(e.ONE) , r = a.q.subtract(e.ONE) , n = i.multiply(r); 0 == n.gcd(h).compareTo(e.ONE) ? (a.n = a.p.multiply(a.q), a.d = h.modInverse(n), a.dmp1 = a.d.mod(i), a.dmq1 = a.d.mod(r), a.coeff = a.q.modInverse(a.p), setTimeout(function() { s() }, 0)) : setTimeout(u, 0) } , c = function() { a.q = i(), a.q.fromNumberAsync(o, 1, n, function() { a.q.subtract(e.ONE).gcda(h, function(t) { 0 == t.compareTo(e.ONE) && a.q.isProbablePrime(10) ? setTimeout(r, 0) : setTimeout(c, 0) }) }) } , f = function() { a.p = i(), a.p.fromNumberAsync(t - o, 1, n, function() { a.p.subtract(e.ONE).gcda(h, function(t) { 0 == t.compareTo(e.ONE) && a.p.isProbablePrime(10) ? setTimeout(c, 0) : setTimeout(f, 0) }) }) }; setTimeout(f, 0) }; setTimeout(u, 0) }; ue.prototype.generateAsync = t; var r = function(t, e) { var i = this.s < 0 ? this.negate() : this.clone() , r = t.s < 0 ? t.negate() : t.clone(); if (i.compareTo(r) < 0) { var s = i; i = r, r = s } var n = i.getLowestSetBit() , o = r.getLowestSetBit(); if (0 > o) return void e(i); o > n && (o = n), o > 0 && (i.rShiftTo(o, i), r.rShiftTo(o, r)); var h = function() { (n = i.getLowestSetBit()) > 0 && i.rShiftTo(n, i), (n = r.getLowestSetBit()) > 0 && r.rShiftTo(n, r), i.compareTo(r) >= 0 ? (i.subTo(r, i), i.rShiftTo(1, i)) : (r.subTo(i, r), r.rShiftTo(1, r)), i.signum() > 0 ? setTimeout(h, 0) : (o > 0 && r.lShiftTo(o, r), setTimeout(function() { e(r) }, 0)) }; setTimeout(h, 10) }; e.prototype.gcda = r; var s = function(t, i, r, s) { if ("number" == typeof i) if (2 > t) this.fromInt(1); else { this.fromNumber(t, r), this.testBit(t - 1) || this.bitwiseTo(e.ONE.shiftLeft(t - 1), ht, this), this.isEven() && this.dAddOffset(1, 0); var n = this , o = function() { n.dAddOffset(2, 0), n.bitLength() > t && n.subTo(e.ONE.shiftLeft(t - 1), n), n.isProbablePrime(i) ? setTimeout(function() { s() }, 0) : setTimeout(o, 0) }; setTimeout(o, 0) } else { var h = new Array , a = 7 & t; h.length = (t >> 3) + 1, i.nextBytes(h), a > 0 ? h[0] &= (1 << a) - 1 : h[0] = 0, this.fromString(h, 256) } }; e.prototype.fromNumberAsync = s }(); var Le = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" , qe = "=" , Ce = Ce || {}; Ce.env = Ce.env || {}; var He = Ce , je = Object.prototype , ke = "[object Function]" , Fe = ["toString", "valueOf"]; Ce.env.parseUA = function(t) { var e, i = function(t) { var e = 0; return parseFloat(t.replace(/\./g, function() { return 1 == e++ ? "" : "." })) }, r = navigator, s = { ie: 0, opera: 0, gecko: 0, webkit: 0, chrome: 0, mobile: null, air: 0, ipad: 0, iphone: 0, ipod: 0, ios: null, android: 0, webos: 0, caja: r && r.cajaVersion, secure: !1, os: null }, n = t || navigator && navigator.userAgent, o = window && window.location, h = o && o.href; return s.secure = h && 0 === h.toLowerCase().indexOf("https"), n && (/windows|win32/i.test(n) ? s.os = "windows" : /macintosh/i.test(n) ? s.os = "macintosh" : /rhino/i.test(n) && (s.os = "rhino"), /KHTML/.test(n) && (s.webkit = 1), e = n.match(/AppleWebKit\/([^\s]*)/), e && e[1] && (s.webkit = i(e[1]), / Mobile\//.test(n) ? (s.mobile = "Apple", e = n.match(/OS ([^\s]*)/), e && e[1] && (e = i(e[1].replace("_", "."))), s.ios = e, s.ipad = s.ipod = s.iphone = 0, e = n.match(/iPad|iPod|iPhone/), e && e[0] && (s[e[0].toLowerCase()] = s.ios)) : (e = n.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/), e && (s.mobile = e[0]), /webOS/.test(n) && (s.mobile = "WebOS", e = n.match(/webOS\/([^\s]*);/), e && e[1] && (s.webos = i(e[1]))), / Android/.test(n) && (s.mobile = "Android", e = n.match(/Android ([^\s]*);/), e && e[1] && (s.android = i(e[1])))), e = n.match(/Chrome\/([^\s]*)/), e && e[1] ? s.chrome = i(e[1]) : (e = n.match(/AdobeAIR\/([^\s]*)/), e && (s.air = e[0]))), s.webkit || (e = n.match(/Opera[\s\/]([^\s]*)/), e && e[1] ? (s.opera = i(e[1]), e = n.match(/Version\/([^\s]*)/), e && e[1] && (s.opera = i(e[1])), e = n.match(/Opera Mini[^;]*/), e && (s.mobile = e[0])) : (e = n.match(/MSIE\s([^;]*)/), e && e[1] ? s.ie = i(e[1]) : (e = n.match(/Gecko\/([^\s]*)/), e && (s.gecko = 1, e = n.match(/rv:([^\s\)]*)/), e && e[1] && (s.gecko = i(e[1]))))))), s } , Ce.env.ua = Ce.env.parseUA(), Ce.isFunction = function(t) { return "function" == typeof t || je.toString.apply(t) === ke } , Ce._IEEnumFix = Ce.env.ua.ie ? function(t, e) { var i, r, s; for (i = 0; i < Fe.length; i += 1) r = Fe[i], s = e[r], He.isFunction(s) && s != je[r] && (t[r] = s) } : function() {} , Ce.extend = function(t, e, i) { if (!e || !t) throw new Error("extend failed, please check that all dependencies are included."); var r, s = function() {}; if (s.prototype = e.prototype, t.prototype = new s, t.prototype.constructor = t, t.superclass = e.prototype, e.prototype.constructor == je.constructor && (e.prototype.constructor = e), i) { for (r in i) He.hasOwnProperty(i, r) && (t.prototype[r] = i[r]); He._IEEnumFix(t.prototype, i) } } , /* * asn1.js - ASN.1 DER encoder classes * * Copyright (c) 2013 Kenji Urushima (kenji.urushima@gmail.com) * * This software is licensed under the terms of the MIT License. * http://kjur.github.com/jsrsasign/license * * The above copyright and license notice shall be * included in all copies or substantial portions of the Software. */ /** * @fileOverview * @name asn1-1.0.js * @author Kenji Urushima kenji.urushima@gmail.com * @version 1.0.2 (2013-May-30) * @since 2.1 * @license <a href="http://kjur.github.io/jsrsasign/license/">MIT License</a> */ "undefined" != typeof KJUR && KJUR || (KJUR = {}), "undefined" != typeof KJUR.asn1 && KJUR.asn1 || (KJUR.asn1 = {}), KJUR.asn1.ASN1Util = new function() { this.integerToByteHex = function(t) { var e = t.toString(16); return e.length % 2 == 1 && (e = "0" + e), e } , this.bigIntToMinTwosComplementsHex = function(t) { var i = t.toString(16); if ("-" != i.substr(0, 1)) i.length % 2 == 1 ? i = "0" + i : i.match(/^[0-7]/) || (i = "00" + i); else { var r = i.substr(1) , s = r.length; s % 2 == 1 ? s += 1 : i.match(/^[0-7]/) || (s += 2); for (var n = "", o = 0; s > o; o++) n += "f"; var h = new e(n,16) , a = h.xor(t).add(e.ONE); i = a.toString(16).replace(/^-/, "") } return i } , this.getPEMStringFromHex = function(t, e) { var i = CryptoJS.enc.Hex.parse(t) , r = CryptoJS.enc.Base64.stringify(i) , s = r.replace(/(.{64})/g, "$1\r\n"); return s = s.replace(/\r\n$/, ""), "-----BEGIN " + e + "-----\r\n" + s + "\r\n-----END " + e + "-----\r\n" } } , KJUR.asn1.ASN1Object = function() { var t = ""; this.getLengthHexFromValue = function() { if ("undefined" == typeof this.hV || null == this.hV) throw "this.hV is null or undefined."; if (this.hV.length % 2 == 1) throw "value hex must be even length: n=" + t.length + ",v=" + this.hV; var e = this.hV.length / 2 , i = e.toString(16); if (i.length % 2 == 1 && (i = "0" + i), 128 > e) return i; var r = i.length / 2; if (r > 15) throw "ASN.1 length too long to represent by 8x: n = " + e.toString(16); var s = 128 + r; return s.toString(16) + i } , this.getEncodedHex = function() { return (null == this.hTLV || this.isModified) && (this.hV = this.getFreshValueHex(), this.hL = this.getLengthHexFromValue(), this.hTLV = this.hT + this.hL + this.hV, this.isModified = !1), this.hTLV } , this.getValueHex = function() { return this.getEncodedHex(), this.hV } , this.getFreshValueHex = function() { return "" } } , KJUR.asn1.DERAbstractString = function(t) { KJUR.asn1.DERAbstractString.superclass.constructor.call(this); this.getString = function() { return this.s } , this.setString = function(t) { this.hTLV = null, this.isModified = !0, this.s = t, this.hV = stohex(this.s) } , this.setStringHex = function(t) { this.hTLV = null, this.isModified = !0, this.s = null, this.hV = t } , this.getFreshValueHex = function() { return this.hV } , "undefined" != typeof t && ("undefined" != typeof t.str ? this.setString(t.str) : "undefined" != typeof t.hex && this.setStringHex(t.hex)) } , Ce.extend(KJUR.asn1.DERAbstractString, KJUR.asn1.ASN1Object), KJUR.asn1.DERAbstractTime = function(t) { KJUR.asn1.DERAbstractTime.superclass.constructor.call(this); this.localDateToUTC = function(t) { utc = t.getTime() + 6e4 * t.getTimezoneOffset(); var e = new Date(utc); return e } , this.formatDate = function(t, e) { var i = this.zeroPadding , r = this.localDateToUTC(t) , s = String(r.getFullYear()); "utc" == e && (s = s.substr(2, 2)); var n = i(String(r.getMonth() + 1), 2) , o = i(String(r.getDate()), 2) , h = i(String(r.getHours()), 2) , a = i(String(r.getMinutes()), 2) , u = i(String(r.getSeconds()), 2); return s + n + o + h + a + u + "Z" } , this.zeroPadding = function(t, e) { return t.length >= e ? t : new Array(e - t.length + 1).join("0") + t } , this.getString = function() { return this.s } , this.setString = function(t) { this.hTLV = null, this.isModified = !0, this.s = t, this.hV = stohex(this.s) } , this.setByDateValue = function(t, e, i, r, s, n) { var o = new Date(Date.UTC(t, e - 1, i, r, s, n, 0)); this.setByDate(o) } , this.getFreshValueHex = function() { return this.hV } } , Ce.extend(KJUR.asn1.DERAbstractTime, KJUR.asn1.ASN1Object), KJUR.asn1.DERAbstractStructured = function(t) { KJUR.asn1.DERAbstractString.superclass.constructor.call(this); this.setByASN1ObjectArray = function(t) { this.hTLV = null, this.isModified = !0, this.asn1Array = t } , this.appendASN1Object = function(t) { this.hTLV = null, this.isModified = !0, this.asn1Array.push(t) } , this.asn1Array = new Array, "undefined" != typeof t && "undefined" != typeof t.array && (this.asn1Array = t.array) } , Ce.extend(KJUR.asn1.DERAbstractStructured, KJUR.asn1.ASN1Object), KJUR.asn1.DERBoolean = function() { KJUR.asn1.DERBoolean.superclass.constructor.call(this), this.hT = "01", this.hTLV = "0101ff" } , Ce.extend(KJUR.asn1.DERBoolean, KJUR.asn1.ASN1Object), KJUR.asn1.DERInteger = function(t) { KJUR.asn1.DERInteger.superclass.constructor.call(this), this.hT = "02", this.setByBigInteger = function(t) { this.hTLV = null, this.isModified = !0, this.hV = KJUR.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t) } , this.setByInteger = function(t) { var i = new e(String(t),10); this.setByBigInteger(i) } , this.setValueHex = function(t) { this.hV = t } , this.getFreshValueHex = function() { return this.hV } , "undefined" != typeof t && ("undefined" != typeof t.bigint ? this.setByBigInteger(t.bigint) : "undefined" != typeof t["int"] ? this.setByInteger(t["int"]) : "undefined" != typeof t.hex && this.setValueHex(t.hex)) } , Ce.extend(KJUR.asn1.DERInteger, KJUR.asn1.ASN1Object), KJUR.asn1.DERBitString = function(t) { KJUR.asn1.DERBitString.superclass.constructor.call(this), this.hT = "03", this.setHexValueIncludingUnusedBits = function(t) { this.hTLV = null, this.isModified = !0, this.hV = t } , this.setUnusedBitsAndHexValue = function(t, e) { if (0 > t || t > 7) throw "unused bits shall be from 0 to 7: u = " + t; var i = "0" + t; this.hTLV = null, this.isModified = !0, this.hV = i + e } , this.setByBinaryString = function(t) { t = t.replace(/0+$/, ""); var e = 8 - t.length % 8; 8 == e && (e = 0); for (var i = 0; e >= i; i++) t += "0"; for (var r = "", i = 0; i < t.length - 1; i += 8) { var s = t.substr(i, 8) , n = parseInt(s, 2).toString(16); 1 == n.length && (n = "0" + n), r += n } this.hTLV = null, this.isModified = !0, this.hV = "0" + e + r } , this.setByBooleanArray = function(t) { for (var e = "", i = 0; i < t.length; i++) e += 1 == t[i] ? "1" : "0"; this.setByBinaryString(e) } , this.newFalseArray = function(t) { for (var e = new Array(t), i = 0; t > i; i++) e[i] = !1; return e } , this.getFreshValueHex = function() { return this.hV } , "undefined" != typeof t && ("undefined" != typeof t.hex ? this.setHexValueIncludingUnusedBits(t.hex) : "undefined" != typeof t.bin ? this.setByBinaryString(t.bin) : "undefined" != typeof t.array && this.setByBooleanArray(t.array)) } , Ce.extend(KJUR.asn1.DERBitString, KJUR.asn1.ASN1Object), KJUR.asn1.DEROctetString = function(t) { KJUR.asn1.DEROctetString.superclass.constructor.call(this, t), this.hT = "04" } , Ce.extend(KJUR.asn1.DEROctetString, KJUR.asn1.DERAbstractString), KJUR.asn1.DERNull = function() { KJUR.asn1.DERNull.superclass.constructor.call(this), this.hT = "05", this.hTLV = "0500" } , Ce.extend(KJUR.asn1.DERNull, KJUR.asn1.ASN1Object), KJUR.asn1.DERObjectIdentifier = function(t) { var i = function(t) { var e = t.toString(16); return 1 == e.length && (e = "0" + e), e } , r = function(t) { var r = "" , s = new e(t,10) , n = s.toString(2) , o = 7 - n.length % 7; 7 == o && (o = 0); for (var h = "", a = 0; o > a; a++) h += "0"; n = h + n; for (var a = 0; a < n.length - 1; a += 7) { var u = n.substr(a, 7); a != n.length - 7 && (u = "1" + u), r += i(parseInt(u, 2)) } return r }; KJUR.asn1.DERObjectIdentifier.superclass.constructor.call(this), this.hT = "06", this.setValueHex = function(t) { this.hTLV = null, this.isModified = !0, this.s = null, this.hV = t } , this.setValueOidString = function(t) { if (!t.match(/^[0-9.]+$/)) throw "malformed oid string: " + t; var e = "" , s = t.split(".") , n = 40 * parseInt(s[0]) + parseInt(s[1]); e += i(n), s.splice(0, 2); for (var o = 0; o < s.length; o++) e += r(s[o]); this.hTLV = null, this.isModified = !0, this.s = null, this.hV = e } , this.setValueName = function(t) { if ("undefined" == typeof KJUR.asn1.x509.OID.name2oidList[t]) throw "DERObjectIdentifier oidName undefined: " + t; var e = KJUR.asn1.x509.OID.name2oidList[t]; this.setValueOidString(e) } , this.getFreshValueHex = function() { return this.hV } , "undefined" != typeof t && ("undefined" != typeof t.oid ? this.setValueOidString(t.oid) : "undefined" != typeof t.hex ? this.setValueHex(t.hex) : "undefined" != typeof t.name && this.setValueName(t.name)) } , Ce.extend(KJUR.asn1.DERObjectIdentifier, KJUR.asn1.ASN1Object), KJUR.asn1.DERUTF8String = function(t) { KJUR.asn1.DERUTF8String.superclass.constructor.call(this, t), this.hT = "0c" } , Ce.extend(KJUR.asn1.DERUTF8String, KJUR.asn1.DERAbstractString), KJUR.asn1.DERNumericString = function(t) { KJUR.asn1.DERNumericString.superclass.constructor.call(this, t), this.hT = "12" } , Ce.extend(KJUR.asn1.DERNumericString, KJUR.asn1.DERAbstractString), KJUR.asn1.DERPrintableString = function(t) { KJUR.asn1.DERPrintableString.superclass.constructor.call(this, t), this.hT = "13" } , Ce.extend(KJUR.asn1.DERPrintableString, KJUR.asn1.DERAbstractString), KJUR.asn1.DERTeletexString = function(t) { KJUR.asn1.DERTeletexString.superclass.constructor.call(this, t), this.hT = "14" } , Ce.extend(KJUR.asn1.DERTeletexString, KJUR.asn1.DERAbstractString), KJUR.asn1.DERIA5String = function(t) { KJUR.asn1.DERIA5String.superclass.constructor.call(this, t), this.hT = "16" } , Ce.extend(KJUR.asn1.DERIA5String, KJUR.asn1.DERAbstractString), KJUR.asn1.DERUTCTime = function(t) { KJUR.asn1.DERUTCTime.superclass.constructor.call(this, t), this.hT = "17", this.setByDate = function(t) { this.hTLV = null, this.isModified = !0, this.date = t, this.s = this.formatDate(this.date, "utc"), this.hV = stohex(this.s) } , "undefined" != typeof t && ("undefined" != typeof t.str ? this.setString(t.str) : "undefined" != typeof t.hex ? this.setStringHex(t.hex) : "undefined" != typeof t.date && this.setByDate(t.date)) } , Ce.extend(KJUR.asn1.DERUTCTime, KJUR.asn1.DERAbstractTime), KJUR.asn1.DERGeneralizedTime = function(t) { KJUR.asn1.DERGeneralizedTime.superclass.constructor.call(this, t), this.hT = "18", this.setByDate = function(t) { this.hTLV = null, this.isModified = !0, this.date = t, this.s = this.formatDate(this.date, "gen"), this.hV = stohex(this.s) } , "undefined" != typeof t && ("undefined" != typeof t.str ? this.setString(t.str) : "undefined" != typeof t.hex ? this.setStringHex(t.hex) : "undefined" != typeof t.date && this.setByDate(t.date)) } , Ce.extend(KJUR.asn1.DERGeneralizedTime, KJUR.asn1.DERAbstractTime), KJUR.asn1.DERSequence = function(t) { KJUR.asn1.DERSequence.superclass.constructor.call(this, t), this.hT = "30", this.getFreshValueHex = function() { for (var t = "", e = 0; e < this.asn1Array.length; e++) { var i = this.asn1Array[e]; t += i.getEncodedHex() } return this.hV = t, this.hV } } , Ce.extend(KJUR.asn1.DERSequence, KJUR.asn1.DERAbstractStructured), KJUR.asn1.DERSet = function(t) { KJUR.asn1.DERSet.superclass.constructor.call(this, t), this.hT = "31", this.getFreshValueHex = function() { for (var t = new Array, e = 0; e < this.asn1Array.length; e++) { var i = this.asn1Array[e]; t.push(i.getEncodedHex()) } return t.sort(), this.hV = t.join(""), this.hV } } , Ce.extend(KJUR.asn1.DERSet, KJUR.asn1.DERAbstractStructured), KJUR.asn1.DERTaggedObject = function(t) { KJUR.asn1.DERTaggedObject.superclass.constructor.call(this), this.hT = "a0", this.hV = "", this.isExplicit = !0, this.asn1Object = null, this.setASN1Object = function(t, e, i) { this.hT = e, this.isExplicit = t, this.asn1Object = i, this.isExplicit ? (this.hV = this.asn1Object.getEncodedHex(), this.hTLV = null, this.isModified = !0) : (this.hV = null, this.hTLV = i.getEncodedHex(), this.hTLV = this.hTLV.replace(/^../, e), this.isModified = !1) } , this.getFreshValueHex = function() { return this.hV } , "undefined" != typeof t && ("undefined" != typeof t.tag && (this.hT = t.tag), "undefined" != typeof t.explicit && (this.isExplicit = t.explicit), "undefined" != typeof t.obj && (this.asn1Object = t.obj, this.setASN1Object(this.isExplicit, this.hT, this.asn1Object))) } , Ce.extend(KJUR.asn1.DERTaggedObject, KJUR.asn1.ASN1Object), // Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it> // copyright notice and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. function(t) { "use strict"; var e, i = {}; i.decode = function(i) { var r; if (e === t) { var s = "0123456789ABCDEF" , n = " \f\n\r \u2028\u2029"; for (e = [], r = 0; 16 > r; ++r) e[s.charAt(r)] = r; for (s = s.toLowerCase(), r = 10; 16 > r; ++r) e[s.charAt(r)] = r; for (r = 0; r < n.length; ++r) e[n.charAt(r)] = -1 } var o = [] , h = 0 , a = 0; for (r = 0; r < i.length; ++r) { var u = i.charAt(r); if ("=" == u) break; if (u = e[u], -1 != u) { if (u === t) throw "Illegal character at offset " + r; h |= u, ++a >= 2 ? (o[o.length] = h, h = 0, a = 0) : h <<= 4 } } if (a) throw "Hex encoding incomplete: 4 bits missing"; return o } , window.Hex = i }(), // Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it> // copyright notice and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. function(t) { "use strict"; var e, i = {}; i.decode = function(i) { var r; if (e === t) { var s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" , n = "= \f\n\r \u2028\u2029"; for (e = [], r = 0; 64 > r; ++r) e[s.charAt(r)] = r; for (r = 0; r < n.length; ++r) e[n.charAt(r)] = -1 } var o = [] , h = 0 , a = 0; for (r = 0; r < i.length; ++r) { var u = i.charAt(r); if ("=" == u) break; if (u = e[u], -1 != u) { if (u === t) throw "Illegal character at offset " + r; h |= u, ++a >= 4 ? (o[o.length] = h >> 16, o[o.length] = h >> 8 & 255, o[o.length] = 255 & h, h = 0, a = 0) : h <<= 6 } } switch (a) { case 1: throw "Base64 encoding incomplete: at least 2 bits missing"; case 2: o[o.length] = h >> 10; break; case 3: o[o.length] = h >> 16, o[o.length] = h >> 8 & 255 } return o } , i.re = /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/, i.unarmor = function(t) { var e = i.re.exec(t); if (e) if (e[1]) t = e[1]; else { if (!e[2]) throw "RegExp out of sync"; t = e[2] } return i.decode(t) } , window.Base64 = i }(), // Copyright (c) 2008-2013 Lapo Luchini <lapo@lapo.it> // copyright notice and this permission notice appear in all copies. // // THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES // WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR // ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES // WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN // ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF // OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. function(t) { "use strict"; function e(t, i) { t instanceof e ? (this.enc = t.enc, this.pos = t.pos) : (this.enc = t, this.pos = i) } function i(t, e, i, r, s) { this.stream = t, this.header = e, this.length = i, this.tag = r, this.sub = s } var r = 100 , s = "…" , n = { tag: function(t, e) { var i = document.createElement(t); return i.className = e, i }, text: function(t) { return document.createTextNode(t) } }; e.prototype.get = function(e) { if (e === t && (e = this.pos++), e >= this.enc.length) throw "Requesting byte offset " + e + " on a stream of length " + this.enc.length; return this.enc[e] } , e.prototype.hexDigits = "0123456789ABCDEF", e.prototype.hexByte = function(t) { return this.hexDigits.charAt(t >> 4 & 15) + this.hexDigits.charAt(15 & t) } , e.prototype.hexDump = function(t, e, i) { for (var r = "", s = t; e > s; ++s) if (r += this.hexByte(this.get(s)), i !== !0) switch (15 & s) { case 7: r += " "; break; case 15: r += "\n"; break; default: r += " " } return r } , e.prototype.parseStringISO = function(t, e) { for (var i = "", r = t; e > r; ++r) i += String.fromCharCode(this.get(r)); return i } , e.prototype.parseStringUTF = function(t, e) { for (var i = "", r = t; e > r; ) { var s = this.get(r++); i += 128 > s ? String.fromCharCode(s) : s > 191 && 224 > s ? String.fromCharCode((31 & s) << 6 | 63 & this.get(r++)) : String.fromCharCode((15 & s) << 12 | (63 & this.get(r++)) << 6 | 63 & this.get(r++)) } return i } , e.prototype.parseStringBMP = function(t, e) { for (var i = "", r = t; e > r; r += 2) { var s = this.get(r) , n = this.get(r + 1); i += String.fromCharCode((s << 8) + n) } return i } , e.prototype.reTime = /^((?:1[89]|2\d)?\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/, e.prototype.parseTime = function(t, e) { var i = this.parseStringISO(t, e) , r = this.reTime.exec(i); return r ? (i = r[1] + "-" + r[2] + "-" + r[3] + " " + r[4], r[5] && (i += ":" + r[5], r[6] && (i += ":" + r[6], r[7] && (i += "." + r[7]))), r[8] && (i += " UTC", "Z" != r[8] && (i += r[8], r[9] && (i += ":" + r[9]))), i) : "Unrecognized time: " + i } , e.prototype.parseInteger = function(t, e) { var i = e - t; if (i > 4) { i <<= 3; var r = this.get(t); if (0 === r) i -= 8; else for (; 128 > r; ) r <<= 1, --i; return "(" + i + " bit)" } for (var s = 0, n = t; e > n; ++n) s = s << 8 | this.get(n); return s } , e.prototype.parseBitString = function(t, e) { var i = this.get(t) , r = (e - t - 1 << 3) - i , s = "(" + r + " bit)"; if (20 >= r) { var n = i; s += " "; for (var o = e - 1; o > t; --o) { for (var h = this.get(o), a = n; 8 > a; ++a) s += h >> a & 1 ? "1" : "0"; n = 0 } } return s } , e.prototype.parseOctetString = function(t, e) { var i = e - t , n = "(" + i + " byte) "; i > r && (e = t + r); for (var o = t; e > o; ++o) n += this.hexByte(this.get(o)); return i > r && (n += s), n } , e.prototype.parseOID = function(t, e) { for (var i = "", r = 0, s = 0, n = t; e > n; ++n) { var o = this.get(n); if (r = r << 7 | 127 & o, s += 7, !(128 & o)) { if ("" === i) { var h = 80 > r ? 40 > r ? 0 : 1 : 2; i = h + "." + (r - 40 * h) } else i += "." + (s >= 31 ? "bigint" : r); r = s = 0 } } return i } , i.prototype.typeName = function() { if (this.tag === t) return "unknown"; var e = this.tag >> 6 , i = (this.tag >> 5 & 1, 31 & this.tag); switch (e) { case 0: switch (i) { case 0: return "EOC"; case 1: return "BOOLEAN"; case 2: return "INTEGER"; case 3: return "BIT_STRING"; case 4: return "OCTET_STRING"; case 5: return "NULL"; case 6: return "OBJECT_IDENTIFIER"; case 7: return "ObjectDescriptor"; case 8: return "EXTERNAL"; case 9: return "REAL"; case 10: return "ENUMERATED"; case 11: return "EMBEDDED_PDV"; case 12: return "UTF8String"; case 16: return "SEQUENCE"; case 17: return "SET"; case 18: return "NumericString"; case 19: return "PrintableString"; case 20: return "TeletexString"; case 21: return "VideotexString"; case 22: return "IA5String"; case 23: return "UTCTime"; case 24: return "GeneralizedTime"; case 25: return "GraphicString"; case 26: return "VisibleString"; case 27: return "GeneralString"; case 28: return "UniversalString"; case 30: return "BMPString"; default: return "Universal_" + i.toString(16) } case 1: return "Application_" + i.toString(16); case 2: return "[" + i + "]"; case 3: return "Private_" + i.toString(16) } } , i.prototype.reSeemsASCII = /^[ -~]+$/, i.prototype.content = function() { if (this.tag === t) return null; var e = this.tag >> 6 , i = 31 & this.tag , n = this.posContent() , o = Math.abs(this.length); if (0 !== e) { if (null !== this.sub) return "(" + this.sub.length + " elem)"; var h = this.stream.parseStringISO(n, n + Math.min(o, r)); return this.reSeemsASCII.test(h) ? h.substring(0, 2 * r) + (h.length > 2 * r ? s : "") : this.stream.parseOctetString(n, n + o) } switch (i) { case 1: return 0 === this.stream.get(n) ? "false" : "true"; case 2: return this.stream.parseInteger(n, n + o); case 3: return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseBitString(n, n + o); case 4: return this.sub ? "(" + this.sub.length + " elem)" : this.stream.parseOctetString(n, n + o); case 6: return this.stream.parseOID(n, n + o); case 16: case 17: return "(" + this.sub.length + " elem)"; case 12: return this.stream.parseStringUTF(n, n + o); case 18: case 19: case 20: case 21: case 22: case 26: return this.stream.parseStringISO(n, n + o); case 30: return this.stream.parseStringBMP(n, n + o); case 23: case 24: return this.stream.parseTime(n, n + o) } return null } , i.prototype.toString = function() { return this.typeName() + "@" + this.stream.pos + "[header:" + this.header + ",length:" + this.length + ",sub:" + (null === this.sub ? "null" : this.sub.length) + "]" } , i.prototype.print = function(e) { if (e === t && (e = ""), document.writeln(e + this), null !== this.sub) { e += " "; for (var i = 0, r = this.sub.length; r > i; ++i) this.sub[i].print(e) } } , i.prototype.toPrettyString = function(e) { e === t && (e = ""); var i = e + this.typeName() + " @" + this.stream.pos; if (this.length >= 0 && (i += "+"), i += this.length, 32 & this.tag ? i += " (constructed)" : 3 != this.tag && 4 != this.tag || null === this.sub || (i += " (encapsulates)"), i += "\n", null !== this.sub) { e += " "; for (var r = 0, s = this.sub.length; s > r; ++r) i += this.sub[r].toPrettyString(e) } return i } , i.prototype.toDOM = function() { var t = n.tag("div", "node"); t.asn1 = this; var e = n.tag("div", "head") , i = this.typeName().replace(/_/g, " "); e.innerHTML = i; var r = this.content(); if (null !== r) { r = String(r).replace(/</g, "<"); var s = n.tag("span", "preview"); s.appendChild(n.text(r)), e.appendChild(s) } t.appendChild(e), this.node = t, this.head = e; var o = n.tag("div", "value"); if (i = "Offset: " + this.stream.pos + "<br/>", i += "Length: " + this.header + "+", i += this.length >= 0 ? this.length : -this.length + " (undefined)", 32 & this.tag ? i += "<br/>(constructed)" : 3 != this.tag && 4 != this.tag || null === this.sub || (i += "<br/>(encapsulates)"), null !== r && (i += "<br/>Value:<br/><b>" + r + "</b>", "object" == typeof oids && 6 == this.tag)) { var h = oids[r]; h && (h.d && (i += "<br/>" + h.d), h.c && (i += "<br/>" + h.c), h.w && (i += "<br/>(warning!)")) } o.innerHTML = i, t.appendChild(o); var a = n.tag("div", "sub"); if (null !== this.sub) for (var u = 0, c = this.sub.length; c > u; ++u) a.appendChild(this.sub[u].toDOM()); return t.appendChild(a), e.onclick = function() { t.className = "node collapsed" == t.className ? "node" : "node collapsed" } , t } , i.prototype.posStart = function() { return this.stream.pos } , i.prototype.posContent = function() { return this.stream.pos + this.header } , i.prototype.posEnd = function() { return this.stream.pos + this.header + Math.abs(this.length) } , i.prototype.fakeHover = function(t) { this.node.className += " hover", t && (this.head.className += " hover") } , i.prototype.fakeOut = function(t) { var e = / ?hover/; this.node.className = this.node.className.replace(e, ""), t && (this.head.className = this.head.className.replace(e, "")) } , i.prototype.toHexDOM_sub = function(t, e, i, r, s) { if (!(r >= s)) { var o = n.tag("span", e); o.appendChild(n.text(i.hexDump(r, s))), t.appendChild(o) } } , i.prototype.toHexDOM = function(e) { var i = n.tag("span", "hex"); if (e === t && (e = i), this.head.hexNode = i, this.head.onmouseover = function() { this.hexNode.className = "hexCurrent" } , this.head.onmouseout = function() { this.hexNode.className = "hex" } , i.asn1 = this, i.onmouseover = function() { var t = !e.selected; t && (e.selected = this.asn1, this.className = "hexCurrent"), this.asn1.fakeHover(t) } , i.onmouseout = function() { var t = e.selected == this.asn1; this.asn1.fakeOut(t), t && (e.selected = null, this.className = "hex") } , this.toHexDOM_sub(i, "tag", this.stream, this.posStart(), this.posStart() + 1), this.toHexDOM_sub(i, this.length >= 0 ? "dlen" : "ulen", this.stream, this.posStart() + 1, this.posContent()), null === this.sub) i.appendChild(n.text(this.stream.hexDump(this.posContent(), this.posEnd()))); else if (this.sub.length > 0) { var r = this.sub[0] , s = this.sub[this.sub.length - 1]; this.toHexDOM_sub(i, "intro", this.stream, this.posContent(), r.posStart()); for (var o = 0, h = this.sub.length; h > o; ++o) i.appendChild(this.sub[o].toHexDOM(e)); this.toHexDOM_sub(i, "outro", this.stream, s.posEnd(), this.posEnd()) } return i } , i.prototype.toHexString = function(t) { return this.stream.hexDump(this.posStart(), this.posEnd(), !0) } , i.decodeLength = function(t) { var e = t.get() , i = 127 & e; if (i == e) return i; if (i > 3) throw "Length over 24 bits not supported at position " + (t.pos - 1); if (0 === i) return -1; e = 0; for (var r = 0; i > r; ++r) e = e << 8 | t.get(); return e } , i.hasContent = function(t, r, s) { if (32 & t) return !0; if (3 > t || t > 4) return !1; var n = new e(s); 3 == t && n.get(); var o = n.get(); if (o >> 6 & 1) return !1; try { var h = i.decodeLength(n); return n.pos - s.pos + h == r } catch (a) { return !1 } } , i.decode = function(t) { t instanceof e || (t = new e(t,0)); var r = new e(t) , s = t.get() , n = i.decodeLength(t) , o = t.pos - r.pos , h = null; if (i.hasContent(s, n, t)) { var a = t.pos; if (3 == s && t.get(), h = [], n >= 0) { for (var u = a + n; t.pos < u; ) h[h.length] = i.decode(t); if (t.pos != u) throw "Content size is not correct for container starting at offset " + a } else try { for (; ; ) { var c = i.decode(t); if (0 === c.tag) break; h[h.length] = c } n = a - t.pos } catch (f) { throw "Exception while decoding undefined length content: " + f } } else t.pos += n; return new i(r,o,n,s,h) } , i.test = function() { for (var t = [{ value: [39], expected: 39 }, { value: [129, 201], expected: 201 }, { value: [131, 254, 220, 186], expected: 16702650 }], r = 0, s = t.length; s > r; ++r) { var n = new e(t[r].value,0) , o = i.decodeLength(n); o != t[r].expected && document.write("In test[" + r + "] expected " + t[r].expected + " got " + o + "\n") } } , window.ASN1 = i }(), ASN1.prototype.getHexStringValue = function() { var t = this.toHexString() , e = 2 * this.header , i = 2 * this.length; return t.substr(e, i) } , ue.prototype.parseKey = function(t) { try { var e = 0 , i = 0 , r = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/ , s = r.test(t) ? Hex.decode(t) : Base64.unarmor(t) , n = ASN1.decode(s); if (3 === n.sub.length && (n = n.sub[2].sub[0]), 9 === n.sub.length) { e = n.sub[1].getHexStringValue(), this.n = he(e, 16), i = n.sub[2].getHexStringValue(), this.e = parseInt(i, 16); var o = n.sub[3].getHexStringValue(); this.d = he(o, 16); var h = n.sub[4].getHexStringValue(); this.p = he(h, 16); var a = n.sub[5].getHexStringValue(); this.q = he(a, 16); var u = n.sub[6].getHexStringValue(); this.dmp1 = he(u, 16); var c = n.sub[7].getHexStringValue(); this.dmq1 = he(c, 16); var f = n.sub[8].getHexStringValue(); this.coeff = he(f, 16) } else { if (2 !== n.sub.length) return !1; var p = n.sub[1] , l = p.sub[0]; e = l.sub[0].getHexStringValue(), this.n = he(e, 16), i = l.sub[1].getHexStringValue(), this.e = parseInt(i, 16) } return !0 } catch (d) { return !1 } } , ue.prototype.getPrivateBaseKey = function() { var t = { array: [new KJUR.asn1.DERInteger({ "int": 0 }), new KJUR.asn1.DERInteger({ bigint: this.n }), new KJUR.asn1.DERInteger({ "int": this.e }), new KJUR.asn1.DERInteger({ bigint: this.d }), new KJUR.asn1.DERInteger({ bigint: this.p }), new KJUR.asn1.DERInteger({ bigint: this.q }), new KJUR.asn1.DERInteger({ bigint: this.dmp1 }), new KJUR.asn1.DERInteger({ bigint: this.dmq1 }), new KJUR.asn1.DERInteger({ bigint: this.coeff })] } , e = new KJUR.asn1.DERSequence(t); return e.getEncodedHex() } , ue.prototype.getPrivateBaseKeyB64 = function() { return be(this.getPrivateBaseKey()) } , ue.prototype.getPublicBaseKey = function() { var t = { array: [new KJUR.asn1.DERObjectIdentifier({ oid: "1.2.840.113549.1.1.1" }), new KJUR.asn1.DERNull] } , e = new KJUR.asn1.DERSequence(t); t = { array: [new KJUR.asn1.DERInteger({ bigint: this.n }), new KJUR.asn1.DERInteger({ "int": this.e })] }; var i = new KJUR.asn1.DERSequence(t); t = { hex: "00" + i.getEncodedHex() }; var r = new KJUR.asn1.DERBitString(t); t = { array: [e, r] }; var s = new KJUR.asn1.DERSequence(t); return s.getEncodedHex() } , ue.prototype.getPublicBaseKeyB64 = function() { return be(this.getPublicBaseKey()) } , ue.prototype.wordwrap = function(t, e) { if (e = e || 64, !t) return t; var i = "(.{1," + e + "})( +|$\n?)|(.{1," + e + "})"; return t.match(RegExp(i, "g")).join("\n") } , ue.prototype.getPrivateKey = function() { var t = "-----BEGIN RSA PRIVATE KEY-----\n"; return t += this.wordwrap(this.getPrivateBaseKeyB64()) + "\n", t += "-----END RSA PRIVATE KEY-----" } , ue.prototype.getPublicKey = function() { var t = "-----BEGIN PUBLIC KEY-----\n"; return t += this.wordwrap(this.getPublicBaseKeyB64()) + "\n", t += "-----END PUBLIC KEY-----" } , ue.prototype.hasPublicKeyProperty = function(t) { return t = t || {}, t.hasOwnProperty("n") && t.hasOwnProperty("e") } , ue.prototype.hasPrivateKeyProperty = function(t) { return t = t || {}, t.hasOwnProperty("n") && t.hasOwnProperty("e") && t.hasOwnProperty("d") && t.hasOwnProperty("p") && t.hasOwnProperty("q") && t.hasOwnProperty("dmp1") && t.hasOwnProperty("dmq1") && t.hasOwnProperty("coeff") } , ue.prototype.parsePropertiesFrom = function(t) { this.n = t.n, this.e = t.e, t.hasOwnProperty("d") && (this.d = t.d, this.p = t.p, this.q = t.q, this.dmp1 = t.dmp1, this.dmq1 = t.dmq1, this.coeff = t.coeff) } ; var _e = function(t) { ue.call(this), t && ("string" == typeof t ? this.parseKey(t) : (this.hasPrivateKeyProperty(t) || this.hasPublicKeyProperty(t)) && this.parsePropertiesFrom(t)) }; _e.prototype = new ue, _e.prototype.constructor = _e; var ze = function(t) { t = t || {}, this.default_key_size = parseInt(t.default_key_size) || 1024, this.default_public_exponent = t.default_public_exponent || "010001", this.log = t.log || !1, this.key = null }; ze.prototype.setKey = function(t) { this.log && this.key && console.warn("A key was already set, overriding existing."), this.key = new _e(t) } , ze.prototype.setPrivateKey = function(t) { this.setKey(t) } , ze.prototype.setPublicKey = function(t) { this.setKey(t) } , ze.prototype.decrypt = function(t) { try { return this.getKey().decrypt(Te(t)) } catch (e) { return !1 } } , ze.prototype.encrypt = function(t) { try { return be(this.getKey().encrypt(t)) } catch (e) { return !1 } } , ze.prototype.getKey = function(t) { if (!this.key) { if (this.key = new _e, t && "[object Function]" === {}.toString.call(t)) return void this.key.generateAsync(this.default_key_size, this.default_public_exponent, t); this.key.generate(this.default_key_size, this.default_public_exponent) } return this.key } , ze.prototype.getPrivateKey = function() { return this.getKey().getPrivateKey() } , ze.prototype.getPrivateKeyB64 = function() { return this.getKey().getPrivateBaseKeyB64() } , ze.prototype.getPublicKey = function() { return this.getKey().getPublicKey() } , ze.prototype.getPublicKeyB64 = function() { return this.getKey().getPublicBaseKeyB64() } , ze.version = "2.3.1", t.JSEncrypt = ze; window.ze = ze; // window.JSEncrypt() }); function getPwd(password){ var a = new window.ze; var t = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5GVku07yXCndaMS1evPIPyWwhbdWMVRqL4qg4OsKbzyTGmV4YkG8H0hwwrFLuPhqC5tL136aaizuL/lN5DRRbePct6syILOLLCBJ5J5rQyGr00l1zQvdNKYp4tT5EFlqw8tlPkibcsd5Ecc8sTYa77HxNeIa6DRuObC5H9t85ALJyDVZC3Y4ES/u61Q7LDnB3kG9MnXJsJiQxm1pLkE7Zfxy29d5JaXbbfwhCDSjE4+dUQoq2MVIt2qVjZSo5Hd/bAFGU1Lmc7GkFeLiLjNTOfECF52ms/dks92Wx/glfRuK4h/fcxtGB4Q2VXu5k68e/2uojs6jnFsMKVe+FVUDkQIDAQAB"; a.setPublicKey(t); return encodeURIComponent(a.encrypt(password)) } var b = "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"; var c = '4jGVJge3sHtgXrSdTX6P991K'; b = "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" c = 'nhvP9lzgAkodSakuYkTNEEdG' console.log(DES3.decrypt(b,c)) function uuid(){ var guid = ""; for (var i = 1; i <= 32; i++) { var n = Math.floor(Math.random() * 16.0).toString(16); guid += n; if ((i == 8) || (i == 12) || (i == 16) || (i == 20)){ guid += "-" // "-"; } } return guid; } console.log(cipher()) // console.log(C_RANDOM(26),cipher()) // console.log(getPwd('inks.2580')) // console.log(uuid())
2.小猪民俗
难点 cookies生成 字段解密


/* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ var CryptoJS = CryptoJS || function (g, l) { var e = {}, d = e.lib = {}, m = function () { }, k = d.Base = { extend: function (a) { m.prototype = this; var c = new m; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } }, p = d.WordArray = k.extend({ init: function (a, c) { a = this.words = a || []; this.sigBytes = c != l ? c : 4 * a.length }, toString: function (a) { return (a || n).stringify(this) }, concat: function (a) { var c = this.words, q = a.words, f = this.sigBytes; a = a.sigBytes; this.clamp(); if (f % 4) for (var b = 0; b < a; b++) c[f + b >>> 2] |= (q[b >>> 2] >>> 24 - 8 * (b % 4) & 255) << 24 - 8 * ((f + b) % 4); else if (65535 < q.length) for (b = 0; b < a; b += 4) c[f + b >>> 2] = q[b >>> 2]; else c.push.apply(c, q); this.sigBytes += a; return this }, clamp: function () { var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4); a.length = g.ceil(c / 4) }, clone: function () { var a = k.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], b = 0; b < a; b += 4) c.push(4294967296 * g.random() | 0); return new p.init(c, a) } }), b = e.enc = {}, n = b.Hex = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var b = [], f = 0; f < a; f++) { var d = c[f >>> 2] >>> 24 - 8 * (f % 4) & 255; b.push((d >>> 4).toString(16)); b.push((d & 15).toString(16)) } return b.join("") }, parse: function (a) { for (var c = a.length, b = [], f = 0; f < c; f += 2) b[f >>> 3] |= parseInt(a.substr(f, 2), 16) << 24 - 4 * (f % 8); return new p.init(b, c / 2) } }, j = b.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var b = [], f = 0; f < a; f++) b.push(String.fromCharCode(c[f >>> 2] >>> 24 - 8 * (f % 4) & 255)); return b.join("") }, parse: function (a) { for (var c = a.length, b = [], f = 0; f < c; f++) b[f >>> 2] |= (a.charCodeAt(f) & 255) << 24 - 8 * (f % 4); return new p.init(b, c) } }, h = b.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(j.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return j.parse(unescape(encodeURIComponent(a))) } }, r = d.BufferedBlockAlgorithm = k.extend({ reset: function () { this._data = new p.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = h.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, b = c.words, f = c.sigBytes, d = this.blockSize, e = f / (4 * d), e = a ? g.ceil(e) : g.max((e | 0) - this._minBufferSize, 0); a = e * d; f = g.min(4 * a, f); if (a) { for (var k = 0; k < a; k += d) this._doProcessBlock(b, k); k = b.splice(0, a); c.sigBytes -= f } return new p.init(k, f) }, clone: function () { var a = k.clone.call(this); a._data = this._data.clone(); return a }, _minBufferSize: 0 }); d.Hasher = r.extend({ cfg: k.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { r.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (b, d) { return (new a.init(d)).finalize(b) } }, _createHmacHelper: function (a) { return function (b, d) { return (new s.HMAC.init(a, d)).finalize(b) } } }); var s = e.algo = {}; return e }(Math); (function () { var g = CryptoJS, l = g.lib, e = l.WordArray, d = l.Hasher, m = [], l = g.algo.SHA1 = d.extend({ _doReset: function () { this._hash = new e.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520]) }, _doProcessBlock: function (d, e) { for (var b = this._hash.words, n = b[0], j = b[1], h = b[2], g = b[3], l = b[4], a = 0; 80 > a; a++) { if (16 > a) m[a] = d[e + a] | 0; else { var c = m[a - 3] ^ m[a - 8] ^ m[a - 14] ^ m[a - 16]; m[a] = c << 1 | c >>> 31 } c = (n << 5 | n >>> 27) + l + m[a]; c = 20 > a ? c + ((j & h | ~j & g) + 1518500249) : 40 > a ? c + ((j ^ h ^ g) + 1859775393) : 60 > a ? c + ((j & h | j & g | h & g) - 1894007588) : c + ((j ^ h ^ g) - 899497514); l = g; g = h; h = j << 30 | j >>> 2; j = n; n = c } b[0] = b[0] + n | 0; b[1] = b[1] + j | 0; b[2] = b[2] + h | 0; b[3] = b[3] + g | 0; b[4] = b[4] + l | 0 }, _doFinalize: function () { var d = this._data, e = d.words, b = 8 * this._nDataBytes, g = 8 * d.sigBytes; e[g >>> 5] |= 128 << 24 - g % 32; e[(g + 64 >>> 9 << 4) + 14] = Math.floor(b / 4294967296); e[(g + 64 >>> 9 << 4) + 15] = b; d.sigBytes = 4 * e.length; this._process(); return this._hash }, clone: function () { var e = d.clone.call(this); e._hash = this._hash.clone(); return e } }); g.SHA1 = d._createHelper(l); g.HmacSHA1 = d._createHmacHelper(l) })(); (function () { var g = CryptoJS, l = g.enc.Utf8; g.algo.HMAC = g.lib.Base.extend({ init: function (e, d) { e = this._hasher = new e.init; "string" == typeof d && (d = l.parse(d)); var g = e.blockSize, k = 4 * g; d.sigBytes > k && (d = e.finalize(d)); d.clamp(); for (var p = this._oKey = d.clone(), b = this._iKey = d.clone(), n = p.words, j = b.words, h = 0; h < g; h++) n[h] ^= 1549556828, j[h] ^= 909522486; p.sigBytes = b.sigBytes = k; this.reset() }, reset: function () { var e = this._hasher; e.reset(); e.update(this._iKey) }, update: function (e) { this._hasher.update(e); return this }, finalize: function (e) { var d = this._hasher; e = d.finalize(e); d.reset(); return d.finalize(this._oKey.clone().concat(e)) } }) })(); (function (s) { function p(a, k, b, h, l, j, m) { a = a + (k & b | ~k & h) + l + m; return (a << j | a >>> 32 - j) + k } function m(a, k, b, h, l, j, m) { a = a + (k & h | b & ~h) + l + m; return (a << j | a >>> 32 - j) + k } function l(a, k, b, h, l, j, m) { a = a + (k ^ b ^ h) + l + m; return (a << j | a >>> 32 - j) + k } function n(a, k, b, h, l, j, m) { a = a + (b ^ (k | ~h)) + l + m; return (a << j | a >>> 32 - j) + k } for (var r = CryptoJS, q = r.lib, v = q.WordArray, t = q.Hasher, q = r.algo, a = [], u = 0; 64 > u; u++) a[u] = 4294967296 * s.abs(s.sin(u + 1)) | 0; q = q.MD5 = t.extend({ _doReset: function () { this._hash = new v.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (g, k) { for (var b = 0; 16 > b; b++) { var h = k + b, w = g[h]; g[h] = (w << 8 | w >>> 24) & 16711935 | (w << 24 | w >>> 8) & 4278255360 } var b = this._hash.words, h = g[k + 0], w = g[k + 1], j = g[k + 2], q = g[k + 3], r = g[k + 4], s = g[k + 5], t = g[k + 6], u = g[k + 7], v = g[k + 8], x = g[k + 9], y = g[k + 10], z = g[k + 11], A = g[k + 12], B = g[k + 13], C = g[k + 14], D = g[k + 15], c = b[0], d = b[1], e = b[2], f = b[3], c = p(c, d, e, f, h, 7, a[0]), f = p(f, c, d, e, w, 12, a[1]), e = p(e, f, c, d, j, 17, a[2]), d = p(d, e, f, c, q, 22, a[3]), c = p(c, d, e, f, r, 7, a[4]), f = p(f, c, d, e, s, 12, a[5]), e = p(e, f, c, d, t, 17, a[6]), d = p(d, e, f, c, u, 22, a[7]), c = p(c, d, e, f, v, 7, a[8]), f = p(f, c, d, e, x, 12, a[9]), e = p(e, f, c, d, y, 17, a[10]), d = p(d, e, f, c, z, 22, a[11]), c = p(c, d, e, f, A, 7, a[12]), f = p(f, c, d, e, B, 12, a[13]), e = p(e, f, c, d, C, 17, a[14]), d = p(d, e, f, c, D, 22, a[15]), c = m(c, d, e, f, w, 5, a[16]), f = m(f, c, d, e, t, 9, a[17]), e = m(e, f, c, d, z, 14, a[18]), d = m(d, e, f, c, h, 20, a[19]), c = m(c, d, e, f, s, 5, a[20]), f = m(f, c, d, e, y, 9, a[21]), e = m(e, f, c, d, D, 14, a[22]), d = m(d, e, f, c, r, 20, a[23]), c = m(c, d, e, f, x, 5, a[24]), f = m(f, c, d, e, C, 9, a[25]), e = m(e, f, c, d, q, 14, a[26]), d = m(d, e, f, c, v, 20, a[27]), c = m(c, d, e, f, B, 5, a[28]), f = m(f, c, d, e, j, 9, a[29]), e = m(e, f, c, d, u, 14, a[30]), d = m(d, e, f, c, A, 20, a[31]), c = l(c, d, e, f, s, 4, a[32]), f = l(f, c, d, e, v, 11, a[33]), e = l(e, f, c, d, z, 16, a[34]), d = l(d, e, f, c, C, 23, a[35]), c = l(c, d, e, f, w, 4, a[36]), f = l(f, c, d, e, r, 11, a[37]), e = l(e, f, c, d, u, 16, a[38]), d = l(d, e, f, c, y, 23, a[39]), c = l(c, d, e, f, B, 4, a[40]), f = l(f, c, d, e, h, 11, a[41]), e = l(e, f, c, d, q, 16, a[42]), d = l(d, e, f, c, t, 23, a[43]), c = l(c, d, e, f, x, 4, a[44]), f = l(f, c, d, e, A, 11, a[45]), e = l(e, f, c, d, D, 16, a[46]), d = l(d, e, f, c, j, 23, a[47]), c = n(c, d, e, f, h, 6, a[48]), f = n(f, c, d, e, u, 10, a[49]), e = n(e, f, c, d, C, 15, a[50]), d = n(d, e, f, c, s, 21, a[51]), c = n(c, d, e, f, A, 6, a[52]), f = n(f, c, d, e, q, 10, a[53]), e = n(e, f, c, d, y, 15, a[54]), d = n(d, e, f, c, w, 21, a[55]), c = n(c, d, e, f, v, 6, a[56]), f = n(f, c, d, e, D, 10, a[57]), e = n(e, f, c, d, t, 15, a[58]), d = n(d, e, f, c, B, 21, a[59]), c = n(c, d, e, f, r, 6, a[60]), f = n(f, c, d, e, z, 10, a[61]), e = n(e, f, c, d, j, 15, a[62]), d = n(d, e, f, c, x, 21, a[63]); b[0] = b[0] + c | 0; b[1] = b[1] + d | 0; b[2] = b[2] + e | 0; b[3] = b[3] + f | 0 }, _doFinalize: function () { var a = this._data, k = a.words, b = 8 * this._nDataBytes, h = 8 * a.sigBytes; k[h >>> 5] |= 128 << 24 - h % 32; var l = s.floor(b / 4294967296); k[(h + 64 >>> 9 << 4) + 15] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360; k[(h + 64 >>> 9 << 4) + 14] = (b << 8 | b >>> 24) & 16711935 | (b << 24 | b >>> 8) & 4278255360; a.sigBytes = 4 * (k.length + 1); this._process(); a = this._hash; k = a.words; for (b = 0; 4 > b; b++) h = k[b], k[b] = (h << 8 | h >>> 24) & 16711935 | (h << 24 | h >>> 8) & 4278255360; return a }, clone: function () { var a = t.clone.call(this); a._hash = this._hash.clone(); return a } }); r.MD5 = t._createHelper(q); r.HmacMD5 = t._createHmacHelper(q) })(Math); function get(k, url) { var n = Array(); for (let i in k) { n.push(i + "=" + k[i]) } console.log(n) var c = { "%3A": ":", "%2C": ",", "%5D": "]", "%5B": "[", "%20": "+", "%40": "@" }; var t = url; var l = t + "?" + n.sort().join('&'); l = Object.keys({ "%3A": ":", "%2C": ",", "%5D": "]", "%5B": "[", "%20": "+", "%40": "@" }).reduce(function (t, e) { return t.replace(new RegExp("(" + e + ")", "g"), c[e]) }, l); t = CryptoJS.MD5(t).toString(); return CryptoJS.HmacSHA1(l, t).toString(); } var _0x447b0f = '5q2DwpVZ'; var _0x3c5e25 = 'fbb75314b88ace35210ca8aa7ef8952652463d32', _0x1c287a = '4164a03bdf146a63f21b6691d903f6e42eeee87c'; var hookcook = function (f1,f2,f0){ return CryptoJS.HmacSHA1(f1 + f2, f0).toString(); } console.log(hookcook(_0x3c5e25,_0x1c287a,_0x447b0f))


/* CryptoJS v3.1.2 code.google.com/p/crypto-js (c) 2009-2013 by Jeff Mott. All rights reserved. code.google.com/p/crypto-js/wiki/License */ var CryptoJS = CryptoJS || function (u, p) { var d = {}, l = d.lib = {}, s = function () { }, t = l.Base = { extend: function (a) { s.prototype = this; var c = new s; a && c.mixIn(a); c.hasOwnProperty("init") || (c.init = function () { c.$super.init.apply(this, arguments) }); c.init.prototype = c; c.$super = this; return c }, create: function () { var a = this.extend(); a.init.apply(a, arguments); return a }, init: function () { }, mixIn: function (a) { for (var c in a) a.hasOwnProperty(c) && (this[c] = a[c]); a.hasOwnProperty("toString") && (this.toString = a.toString) }, clone: function () { return this.init.prototype.extend(this) } }, r = l.WordArray = t.extend({ init: function (a, c) { a = this.words = a || []; this.sigBytes = c != p ? c : 4 * a.length }, toString: function (a) { return (a || v).stringify(this) }, concat: function (a) { var c = this.words, e = a.words, j = this.sigBytes; a = a.sigBytes; this.clamp(); if (j % 4) for (var k = 0; k < a; k++) c[j + k >>> 2] |= (e[k >>> 2] >>> 24 - 8 * (k % 4) & 255) << 24 - 8 * ((j + k) % 4); else if (65535 < e.length) for (k = 0; k < a; k += 4) c[j + k >>> 2] = e[k >>> 2]; else c.push.apply(c, e); this.sigBytes += a; return this }, clamp: function () { var a = this.words, c = this.sigBytes; a[c >>> 2] &= 4294967295 << 32 - 8 * (c % 4); a.length = u.ceil(c / 4) }, clone: function () { var a = t.clone.call(this); a.words = this.words.slice(0); return a }, random: function (a) { for (var c = [], e = 0; e < a; e += 4) c.push(4294967296 * u.random() | 0); return new r.init(c, a) } }), w = d.enc = {}, v = w.Hex = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++) { var k = c[j >>> 2] >>> 24 - 8 * (j % 4) & 255; e.push((k >>> 4).toString(16)); e.push((k & 15).toString(16)) } return e.join("") }, parse: function (a) { for (var c = a.length, e = [], j = 0; j < c; j += 2) e[j >>> 3] |= parseInt(a.substr(j, 2), 16) << 24 - 4 * (j % 8); return new r.init(e, c / 2) } }, b = w.Latin1 = { stringify: function (a) { var c = a.words; a = a.sigBytes; for (var e = [], j = 0; j < a; j++) e.push(String.fromCharCode(c[j >>> 2] >>> 24 - 8 * (j % 4) & 255)); return e.join("") }, parse: function (a) { for (var c = a.length, e = [], j = 0; j < c; j++) e[j >>> 2] |= (a.charCodeAt(j) & 255) << 24 - 8 * (j % 4); return new r.init(e, c) } }, x = w.Utf8 = { stringify: function (a) { try { return decodeURIComponent(escape(b.stringify(a))) } catch (c) { throw Error("Malformed UTF-8 data"); } }, parse: function (a) { return b.parse(unescape(encodeURIComponent(a))) } }, q = l.BufferedBlockAlgorithm = t.extend({ reset: function () { this._data = new r.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = x.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var c = this._data, e = c.words, j = c.sigBytes, k = this.blockSize, b = j / (4 * k), b = a ? u.ceil(b) : u.max((b | 0) - this._minBufferSize, 0); a = b * k; j = u.min(4 * a, j); if (a) { for (var q = 0; q < a; q += k) this._doProcessBlock(e, q); q = e.splice(0, a); c.sigBytes -= j } return new r.init(q, j) }, clone: function () { var a = t.clone.call(this); a._data = this._data.clone(); return a }, _minBufferSize: 0 }); l.Hasher = q.extend({ cfg: t.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { q.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (b, e) { return (new a.init(e)).finalize(b) } }, _createHmacHelper: function (a) { return function (b, e) { return (new n.HMAC.init(a, e)).finalize(b) } } }); var n = d.algo = {}; return d }(Math); (function () { var u = CryptoJS, p = u.lib.WordArray; u.enc.Base64 = { stringify: function (d) { var l = d.words, p = d.sigBytes, t = this._map; d.clamp(); d = []; for (var r = 0; r < p; r += 3) for (var w = (l[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 16 | (l[r + 1 >>> 2] >>> 24 - 8 * ((r + 1) % 4) & 255) << 8 | l[r + 2 >>> 2] >>> 24 - 8 * ((r + 2) % 4) & 255, v = 0; 4 > v && r + 0.75 * v < p; v++) d.push(t.charAt(w >>> 6 * (3 - v) & 63)); if (l = t.charAt(64)) for (; d.length % 4;) d.push(l); return d.join("") }, parse: function (d) { var l = d.length, s = this._map, t = s.charAt(64); t && (t = d.indexOf(t), -1 != t && (l = t)); for (var t = [], r = 0, w = 0; w < l; w++) if (w % 4) { var v = s.indexOf(d.charAt(w - 1)) << 2 * (w % 4), b = s.indexOf(d.charAt(w)) >>> 6 - 2 * (w % 4); t[r >>> 2] |= (v | b) << 24 - 8 * (r % 4); r++ } return p.create(t, r) }, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" } })(); (function (u) { function p(b, n, a, c, e, j, k) { b = b + (n & a | ~n & c) + e + k; return (b << j | b >>> 32 - j) + n } function d(b, n, a, c, e, j, k) { b = b + (n & c | a & ~c) + e + k; return (b << j | b >>> 32 - j) + n } function l(b, n, a, c, e, j, k) { b = b + (n ^ a ^ c) + e + k; return (b << j | b >>> 32 - j) + n } function s(b, n, a, c, e, j, k) { b = b + (a ^ (n | ~c)) + e + k; return (b << j | b >>> 32 - j) + n } for (var t = CryptoJS, r = t.lib, w = r.WordArray, v = r.Hasher, r = t.algo, b = [], x = 0; 64 > x; x++) b[x] = 4294967296 * u.abs(u.sin(x + 1)) | 0; r = r.MD5 = v.extend({ _doReset: function () { this._hash = new w.init([1732584193, 4023233417, 2562383102, 271733878]) }, _doProcessBlock: function (q, n) { for (var a = 0; 16 > a; a++) { var c = n + a, e = q[c]; q[c] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360 } var a = this._hash.words, c = q[n + 0], e = q[n + 1], j = q[n + 2], k = q[n + 3], z = q[n + 4], r = q[n + 5], t = q[n + 6], w = q[n + 7], v = q[n + 8], A = q[n + 9], B = q[n + 10], C = q[n + 11], u = q[n + 12], D = q[n + 13], E = q[n + 14], x = q[n + 15], f = a[0], m = a[1], g = a[2], h = a[3], f = p(f, m, g, h, c, 7, b[0]), h = p(h, f, m, g, e, 12, b[1]), g = p(g, h, f, m, j, 17, b[2]), m = p(m, g, h, f, k, 22, b[3]), f = p(f, m, g, h, z, 7, b[4]), h = p(h, f, m, g, r, 12, b[5]), g = p(g, h, f, m, t, 17, b[6]), m = p(m, g, h, f, w, 22, b[7]), f = p(f, m, g, h, v, 7, b[8]), h = p(h, f, m, g, A, 12, b[9]), g = p(g, h, f, m, B, 17, b[10]), m = p(m, g, h, f, C, 22, b[11]), f = p(f, m, g, h, u, 7, b[12]), h = p(h, f, m, g, D, 12, b[13]), g = p(g, h, f, m, E, 17, b[14]), m = p(m, g, h, f, x, 22, b[15]), f = d(f, m, g, h, e, 5, b[16]), h = d(h, f, m, g, t, 9, b[17]), g = d(g, h, f, m, C, 14, b[18]), m = d(m, g, h, f, c, 20, b[19]), f = d(f, m, g, h, r, 5, b[20]), h = d(h, f, m, g, B, 9, b[21]), g = d(g, h, f, m, x, 14, b[22]), m = d(m, g, h, f, z, 20, b[23]), f = d(f, m, g, h, A, 5, b[24]), h = d(h, f, m, g, E, 9, b[25]), g = d(g, h, f, m, k, 14, b[26]), m = d(m, g, h, f, v, 20, b[27]), f = d(f, m, g, h, D, 5, b[28]), h = d(h, f, m, g, j, 9, b[29]), g = d(g, h, f, m, w, 14, b[30]), m = d(m, g, h, f, u, 20, b[31]), f = l(f, m, g, h, r, 4, b[32]), h = l(h, f, m, g, v, 11, b[33]), g = l(g, h, f, m, C, 16, b[34]), m = l(m, g, h, f, E, 23, b[35]), f = l(f, m, g, h, e, 4, b[36]), h = l(h, f, m, g, z, 11, b[37]), g = l(g, h, f, m, w, 16, b[38]), m = l(m, g, h, f, B, 23, b[39]), f = l(f, m, g, h, D, 4, b[40]), h = l(h, f, m, g, c, 11, b[41]), g = l(g, h, f, m, k, 16, b[42]), m = l(m, g, h, f, t, 23, b[43]), f = l(f, m, g, h, A, 4, b[44]), h = l(h, f, m, g, u, 11, b[45]), g = l(g, h, f, m, x, 16, b[46]), m = l(m, g, h, f, j, 23, b[47]), f = s(f, m, g, h, c, 6, b[48]), h = s(h, f, m, g, w, 10, b[49]), g = s(g, h, f, m, E, 15, b[50]), m = s(m, g, h, f, r, 21, b[51]), f = s(f, m, g, h, u, 6, b[52]), h = s(h, f, m, g, k, 10, b[53]), g = s(g, h, f, m, B, 15, b[54]), m = s(m, g, h, f, e, 21, b[55]), f = s(f, m, g, h, v, 6, b[56]), h = s(h, f, m, g, x, 10, b[57]), g = s(g, h, f, m, t, 15, b[58]), m = s(m, g, h, f, D, 21, b[59]), f = s(f, m, g, h, z, 6, b[60]), h = s(h, f, m, g, C, 10, b[61]), g = s(g, h, f, m, j, 15, b[62]), m = s(m, g, h, f, A, 21, b[63]); a[0] = a[0] + f | 0; a[1] = a[1] + m | 0; a[2] = a[2] + g | 0; a[3] = a[3] + h | 0 }, _doFinalize: function () { var b = this._data, n = b.words, a = 8 * this._nDataBytes, c = 8 * b.sigBytes; n[c >>> 5] |= 128 << 24 - c % 32; var e = u.floor(a / 4294967296); n[(c + 64 >>> 9 << 4) + 15] = (e << 8 | e >>> 24) & 16711935 | (e << 24 | e >>> 8) & 4278255360; n[(c + 64 >>> 9 << 4) + 14] = (a << 8 | a >>> 24) & 16711935 | (a << 24 | a >>> 8) & 4278255360; b.sigBytes = 4 * (n.length + 1); this._process(); b = this._hash; n = b.words; for (a = 0; 4 > a; a++) c = n[a], n[a] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; return b }, clone: function () { var b = v.clone.call(this); b._hash = this._hash.clone(); return b } }); t.MD5 = v._createHelper(r); t.HmacMD5 = v._createHmacHelper(r) })(Math); (function () { var u = CryptoJS, p = u.lib, d = p.Base, l = p.WordArray, p = u.algo, s = p.EvpKDF = d.extend({ cfg: d.extend({keySize: 4, hasher: p.MD5, iterations: 1}), init: function (d) { this.cfg = this.cfg.extend(d) }, compute: function (d, r) { for (var p = this.cfg, s = p.hasher.create(), b = l.create(), u = b.words, q = p.keySize, p = p.iterations; u.length < q;) { n && s.update(n); var n = s.update(d).finalize(r); s.reset(); for (var a = 1; a < p; a++) n = s.finalize(n), s.reset(); b.concat(n) } b.sigBytes = 4 * q; return b } }); u.EvpKDF = function (d, l, p) { return s.create(p).compute(d, l) } })(); CryptoJS.lib.Cipher || function (u) { var p = CryptoJS, d = p.lib, l = d.Base, s = d.WordArray, t = d.BufferedBlockAlgorithm, r = p.enc.Base64, w = p.algo.EvpKDF, v = d.Cipher = t.extend({ cfg: l.extend(), createEncryptor: function (e, a) { return this.create(this._ENC_XFORM_MODE, e, a) }, createDecryptor: function (e, a) { return this.create(this._DEC_XFORM_MODE, e, a) }, init: function (e, a, b) { this.cfg = this.cfg.extend(b); this._xformMode = e; this._key = a; this.reset() }, reset: function () { t.reset.call(this); this._doReset() }, process: function (e) { this._append(e); return this._process() }, finalize: function (e) { e && this._append(e); return this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (e) { return { encrypt: function (b, k, d) { return ("string" == typeof k ? c : a).encrypt(e, b, k, d) }, decrypt: function (b, k, d) { return ("string" == typeof k ? c : a).decrypt(e, b, k, d) } } } }); d.StreamCipher = v.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var b = p.mode = {}, x = function (e, a, b) { var c = this._iv; c ? this._iv = u : c = this._prevBlock; for (var d = 0; d < b; d++) e[a + d] ^= c[d] }, q = (d.BlockCipherMode = l.extend({ createEncryptor: function (e, a) { return this.Encryptor.create(e, a) }, createDecryptor: function (e, a) { return this.Decryptor.create(e, a) }, init: function (e, a) { this._cipher = e; this._iv = a } })).extend(); q.Encryptor = q.extend({ processBlock: function (e, a) { var b = this._cipher, c = b.blockSize; x.call(this, e, a, c); b.encryptBlock(e, a); this._prevBlock = e.slice(a, a + c) } }); q.Decryptor = q.extend({ processBlock: function (e, a) { var b = this._cipher, c = b.blockSize, d = e.slice(a, a + c); b.decryptBlock(e, a); x.call(this, e, a, c); this._prevBlock = d } }); b = b.CBC = q; q = (p.pad = {}).Pkcs7 = { pad: function (a, b) { for (var c = 4 * b, c = c - a.sigBytes % c, d = c << 24 | c << 16 | c << 8 | c, l = [], n = 0; n < c; n += 4) l.push(d); c = s.create(l, c); a.concat(c) }, unpad: function (a) { a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255 } }; d.BlockCipher = v.extend({ cfg: v.cfg.extend({mode: b, padding: q}), reset: function () { v.reset.call(this); var a = this.cfg, b = a.iv, a = a.mode; if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; else c = a.createDecryptor, this._minBufferSize = 1; this._mode = c.call(a, this, b && b.words) }, _doProcessBlock: function (a, b) { this._mode.processBlock(a, b) }, _doFinalize: function () { var a = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { a.pad(this._data, this.blockSize); var b = this._process(!0) } else b = this._process(!0), a.unpad(b); return b }, blockSize: 4 }); var n = d.CipherParams = l.extend({ init: function (a) { this.mixIn(a) }, toString: function (a) { return (a || this.formatter).stringify(this) } }), b = (p.format = {}).OpenSSL = { stringify: function (a) { var b = a.ciphertext; a = a.salt; return (a ? s.create([1398893684, 1701076831]).concat(a).concat(b) : b).toString(r) }, parse: function (a) { a = r.parse(a); var b = a.words; if (1398893684 == b[0] && 1701076831 == b[1]) { var c = s.create(b.slice(2, 4)); b.splice(0, 4); a.sigBytes -= 16 } return n.create({ciphertext: a, salt: c}) } }, a = d.SerializableCipher = l.extend({ cfg: l.extend({format: b}), encrypt: function (a, b, c, d) { d = this.cfg.extend(d); var l = a.createEncryptor(c, d); b = l.finalize(b); l = l.cfg; return n.create({ ciphertext: b, key: c, iv: l.iv, algorithm: a, mode: l.mode, padding: l.padding, blockSize: a.blockSize, formatter: d.format }) }, decrypt: function (a, b, c, d) { d = this.cfg.extend(d); b = this._parse(b, d.format); return a.createDecryptor(c, d).finalize(b.ciphertext) }, _parse: function (a, b) { return "string" == typeof a ? b.parse(a, this) : a } }), p = (p.kdf = {}).OpenSSL = { execute: function (a, b, c, d) { d || (d = s.random(8)); a = w.create({keySize: b + c}).compute(a, d); c = s.create(a.words.slice(b), 4 * c); a.sigBytes = 4 * b; return n.create({key: a, iv: c, salt: d}) } }, c = d.PasswordBasedCipher = a.extend({ cfg: a.cfg.extend({kdf: p}), encrypt: function (b, c, d, l) { l = this.cfg.extend(l); d = l.kdf.execute(d, b.keySize, b.ivSize); l.iv = d.iv; b = a.encrypt.call(this, b, c, d.key, l); b.mixIn(d); return b }, decrypt: function (b, c, d, l) { l = this.cfg.extend(l); c = this._parse(c, l.format); d = l.kdf.execute(d, b.keySize, b.ivSize, c.salt); l.iv = d.iv; return a.decrypt.call(this, b, c, d.key, l) } }) }(); (function () { for (var u = CryptoJS, p = u.lib.BlockCipher, d = u.algo, l = [], s = [], t = [], r = [], w = [], v = [], b = [], x = [], q = [], n = [], a = [], c = 0; 256 > c; c++) a[c] = 128 > c ? c << 1 : c << 1 ^ 283; for (var e = 0, j = 0, c = 0; 256 > c; c++) { var k = j ^ j << 1 ^ j << 2 ^ j << 3 ^ j << 4, k = k >>> 8 ^ k & 255 ^ 99; l[e] = k; s[k] = e; var z = a[e], F = a[z], G = a[F], y = 257 * a[k] ^ 16843008 * k; t[e] = y << 24 | y >>> 8; r[e] = y << 16 | y >>> 16; w[e] = y << 8 | y >>> 24; v[e] = y; y = 16843009 * G ^ 65537 * F ^ 257 * z ^ 16843008 * e; b[k] = y << 24 | y >>> 8; x[k] = y << 16 | y >>> 16; q[k] = y << 8 | y >>> 24; n[k] = y; e ? (e = z ^ a[a[a[G ^ z]]], j ^= a[a[j]]) : e = j = 1 } var H = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54], d = d.AES = p.extend({ _doReset: function () { for (var a = this._key, c = a.words, d = a.sigBytes / 4, a = 4 * ((this._nRounds = d + 6) + 1), e = this._keySchedule = [], j = 0; j < a; j++) if (j < d) e[j] = c[j]; else { var k = e[j - 1]; j % d ? 6 < d && 4 == j % d && (k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255]) : (k = k << 8 | k >>> 24, k = l[k >>> 24] << 24 | l[k >>> 16 & 255] << 16 | l[k >>> 8 & 255] << 8 | l[k & 255], k ^= H[j / d | 0] << 24); e[j] = e[j - d] ^ k } c = this._invKeySchedule = []; for (d = 0; d < a; d++) j = a - d, k = d % 4 ? e[j] : e[j - 4], c[d] = 4 > d || 4 >= j ? k : b[l[k >>> 24]] ^ x[l[k >>> 16 & 255]] ^ q[l[k >>> 8 & 255]] ^ n[l[k & 255]] }, encryptBlock: function (a, b) { this._doCryptBlock(a, b, this._keySchedule, t, r, w, v, l) }, decryptBlock: function (a, c) { var d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d; this._doCryptBlock(a, c, this._invKeySchedule, b, x, q, n, s); d = a[c + 1]; a[c + 1] = a[c + 3]; a[c + 3] = d }, _doCryptBlock: function (a, b, c, d, e, j, l, f) { for (var m = this._nRounds, g = a[b] ^ c[0], h = a[b + 1] ^ c[1], k = a[b + 2] ^ c[2], n = a[b + 3] ^ c[3], p = 4, r = 1; r < m; r++) var q = d[g >>> 24] ^ e[h >>> 16 & 255] ^ j[k >>> 8 & 255] ^ l[n & 255] ^ c[p++], s = d[h >>> 24] ^ e[k >>> 16 & 255] ^ j[n >>> 8 & 255] ^ l[g & 255] ^ c[p++], t = d[k >>> 24] ^ e[n >>> 16 & 255] ^ j[g >>> 8 & 255] ^ l[h & 255] ^ c[p++], n = d[n >>> 24] ^ e[g >>> 16 & 255] ^ j[h >>> 8 & 255] ^ l[k & 255] ^ c[p++], g = q, h = s, k = t; q = (f[g >>> 24] << 24 | f[h >>> 16 & 255] << 16 | f[k >>> 8 & 255] << 8 | f[n & 255]) ^ c[p++]; s = (f[h >>> 24] << 24 | f[k >>> 16 & 255] << 16 | f[n >>> 8 & 255] << 8 | f[g & 255]) ^ c[p++]; t = (f[k >>> 24] << 24 | f[n >>> 16 & 255] << 16 | f[g >>> 8 & 255] << 8 | f[h & 255]) ^ c[p++]; n = (f[n >>> 24] << 24 | f[g >>> 16 & 255] << 16 | f[h >>> 8 & 255] << 8 | f[k & 255]) ^ c[p++]; a[b] = q; a[b + 1] = s; a[b + 2] = t; a[b + 3] = n }, keySize: 8 }); u.AES = p._createHelper(d) })(); var key = "ZaWnnL7eL8P5cFBH"; function encrypt(ua,mid) { //_0x635704[_0x209247('0x668')] text = JSON.stringify({ "env": { "userAgent": ua, "webdriver": false, "language": "zh-CN", "colorDepth": 24, "deviceMemory": 8, "hardwareConcurrency": 12, "screenResolution": [864, 1536], "availableScreenResolution": [824, 1536], "timezoneOffset": -480, "timezone": "Asia/Shanghai", "sessionStorage": true, "localStorage": true, "indexedDb": true, "addBehavior": false, "openDatabase": true, "cpuClass": "not available", "platform": "Win32", "plugins": "83ea58277a28f5adf80116f16c4fe2a2fa3c2fcc", "canvas": `5ea4c8a164d9edbde5d291${parseInt(Math.random(1,9)*10)}07c313${parseInt(Math.random(1,9)*10)}886${parseInt(Math.random(1,9)*10)}3f52f${parseInt(Math.random(1,9)*10)}`, "webgl": "d0014ccb1538f7db550b40b3981c9056fa9b8a51", "webglVendorAndRenderer": "Google Inc. (Intel)~ANGLE (Intel, Intel(R) UHD Graphics Direct3D11 vs_5_0 ps_5_0, D3D11)", "adBlock": false, "hasLiedLanguages": false, "hasLiedResolution": false, "hasLiedOs": false, "hasLiedBrowser": false, "touchSupport": "294018e923c2a412cff13612d13cd5dbca9ad4c7", "fonts": "29192078851a5dd626496cf1394be26829e9a88c", "audio": "124.04347527516074", "timestamp": new Date().getTime(), "hid": false, "msHid": "u", "wktHid": false, "wktVSt": "visible", "wktIFS": false, "msVSt": "u", "mozISX": "u", "loStSpace": "u", "mozSImgEle": "u", "msCrpt": "u", "wktStInfo": "object", "msInDB": "u", "appCache": "u", "cookieApi": "u", "keys": "0,1,BASE_ZHIMA_SCORE,BASE_XIAOBAI_SCORE,baseUrl,routerMode,webUrl,jsonUrl,apiUrl,geoUrl,mobileUrl,orderUrl,chatroot,imroot,cleanUrl,commentApi,verifyUrl,officeLine,vipUrl,payUrl,statisticsUrl,actSysUrl,shareUrl,sendCode,openUrls,searchUrl,verifyNew,fdMall,couponUrl,billUrl,newBillUrl,billListUrl,luCenter,loseUrl,userService,goServiceUser,logoutLimit,logoutTime,sensorsUrl,dataUrl,bdpUrl,bffUrl,xzfdUrl,openWirelesspub,couponUrlNew,_bizTravelUrl,adsUrl,imChat,landlordActivity,imageUploadUrl,wxOtherUrl" }, "biz_info": {"guard_mid": mid} }) return CryptoJS.AES.encrypt(text, CryptoJS.enc.Utf8.parse(key), { iv: CryptoJS.enc.Utf8.parse(key), mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 })['ciphertext'].toString() }
供学习交流 记录自己!!!
__EOF__

本文作者:inkser blog
本文链接:https://www.cnblogs.com/inkser/p/16655820.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/inkser/p/16655820.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)