/*! JSEncrypt v2.3.1 | https://npmcdn.com/jsencrypt@2.3.1/LICENSE.txt */ navigator={};window=this; ! 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, r) { null != t && ("number" == typeof t ? this.fromNumber(t, e, r) : null == e && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, e)) } function r() { return new e(null) } function s(t, e, r, s, i, n) { for (; --n >= 0;) { var o = e * this[t++] + r[s] + i; i = Math.floor(o / 67108864), r[s++] = 67108863 & o } return i } function i(t, e, r, s, i, n) { for (var o = 32767 & e, h = e >> 15; --n >= 0;) { var a = 32767 & this[t], u = this[t++] >> 15, p = h * a + u * o; a = o * a + ((32767 & p) << 15) + r[s] + (1073741823 & i), i = (a >>> 30) + (p >>> 15) + h * u + (i >>> 30), r[s++] = 1073741823 & a } return i } function n(t, e, r, s, i, n) { for (var o = 16383 & e, h = e >> 14; --n >= 0;) { var a = 16383 & this[t], u = this[t++] >> 14, p = h * a + u * o; a = o * a + ((16383 & p) << 14) + r[s] + i, i = (a >> 28) + (p >> 14) + h * u, r[s++] = 268435455 & a } return i } function o(t) { return pt.charAt(t) } function h(t, e) { var r = ct[t.charCodeAt(e)]; return null == r ? -1 : r } 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 = t < 0 ? -1 : 0, t > 0 ? this[0] = t: t < -1 ? this[0] = t + this.DV: this.t = 0 } function p(t) { var e = r(); return e.fromInt(t), e } function c(t, r) { var s; if (16 == r) s = 4; else if (8 == r) s = 3; else if (256 == r) s = 8; else if (2 == r) s = 1; else if (32 == r) s = 5; else { if (4 != r) return void this.fromRadix(t, r); s = 2 } this.t = 0, this.s = 0; for (var i = t.length, n = !1, o = 0; --i >= 0;) { var a = 8 == s ? 255 & t[i] : h(t, i); a < 0 ? "-" == t.charAt(i) && (n = !0) : (n = !1, 0 == o ? this[this.t++] = a: o + s > 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 += s, o >= this.DB && (o -= this.DB)) } 8 == s && 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 f() { 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 r, s = (1 << e) - 1, i = !1, n = "", h = this.t, a = this.DB - h * this.DB % e; if (h-->0) for (a < this.DB && (r = this[h] >> a) > 0 && (i = !0, n = o(r)); h >= 0;) a < e ? (r = (this[h] & (1 << a) - 1) << e - a, r |= this[--h] >> (a += this.DB - e)) : (r = this[h] >> (a -= e) & s, a <= 0 && (a += this.DB, --h)), r > 0 && (i = !0), i && (n += o(r)); return i ? n: "0" } function g() { var t = r(); return e.ZERO.subTo(this, t), t } function d() { return this.s < 0 ? this.negate() : this } function v(t) { var e = this.s - t.s; if (0 != e) return e; var r = this.t; if (e = r - t.t, 0 != e) return this.s < 0 ? -e: e; for (; --r >= 0;) if (0 != (e = this[r] - t[r])) return e; return 0 } function m(t) { var e, r = 1; return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r } function y() { return this.t <= 0 ? 0 : this.DB * (this.t - 1) + m(this[this.t - 1] ^ this.s & this.DM) } function b(t, e) { var r; for (r = this.t - 1; r >= 0; --r) e[r + t] = this[r]; for (r = t - 1; r >= 0; --r) e[r] = 0; e.t = this.t + t, e.s = this.s } function S(t, e) { for (var r = t; r < this.t; ++r) e[r - t] = this[r]; e.t = Math.max(this.t - t, 0), e.s = this.s } function w(t, e) { var r, s = t % this.DB, i = this.DB - s, n = (1 << i) - 1, o = Math.floor(t / this.DB), h = this.s << s & this.DM; for (r = this.t - 1; r >= 0; --r) e[r + o + 1] = this[r] >> i | h, h = (this[r] & n) << s; for (r = o - 1; r >= 0; --r) e[r] = 0; e[o] = h, e.t = this.t + o + 1, e.s = this.s, e.clamp() } function x(t, e) { e.s = this.s; var r = Math.floor(t / this.DB); if (r >= this.t) return void(e.t = 0); var s = t % this.DB, i = this.DB - s, n = (1 << s) - 1; e[0] = this[r] >> s; for (var o = r + 1; o < this.t; ++o) e[o - r - 1] |= (this[o] & n) << i, e[o - r] = this[o] >> s; s > 0 && (e[this.t - r - 1] |= (this.s & n) << i), e.t = this.t - r, e.clamp() } function T(t, e) { for (var r = 0, s = 0, i = Math.min(t.t, this.t); r < i;) s += this[r] - t[r], e[r++] = s & this.DM, s >>= this.DB; if (t.t < this.t) { for (s -= t.s; r < this.t;) s += this[r], e[r++] = s & this.DM, s >>= this.DB; s += this.s } else { for (s += this.s; r < t.t;) s -= t[r], e[r++] = s & this.DM, s >>= this.DB; s -= t.s } e.s = s < 0 ? -1 : 0, s < -1 ? e[r++] = this.DV + s: s > 0 && (e[r++] = s), e.t = r, e.clamp() } function D(t, r) { var s = this.abs(), i = t.abs(), n = s.t; for (r.t = n + i.t; --n >= 0;) r[n] = 0; for (n = 0; n < i.t; ++n) r[n + s.t] = s.am(0, i[n], r, n, 0, s.t); r.s = 0, r.clamp(), this.s != t.s && e.ZERO.subTo(r, r) } function E(t) { for (var e = this.abs(), r = t.t = 2 * e.t; --r >= 0;) t[r] = 0; for (r = 0; r < e.t - 1; ++r) { var s = e.am(r, e[r], t, 2 * r, 0, 1); (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, s, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1) } t.t > 0 && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp() } function A(t, s, i) { var n = t.abs(); if (! (n.t <= 0)) { var o = this.abs(); if (o.t < n.t) return null != s && s.fromInt(0), void(null != i && this.copyTo(i)); null == i && (i = r()); var h = r(), a = this.s, u = t.s, p = this.DB - m(n[n.t - 1]); p > 0 ? (n.lShiftTo(p, h), o.lShiftTo(p, i)) : (n.copyTo(h), o.copyTo(i)); var c = h.t, f = h[c - 1]; if (0 != f) { var l = f * (1 << this.F1) + (c > 1 ? h[c - 2] >> this.F2: 0), g = this.FV / l, d = (1 << this.F1) / l, v = 1 << this.F2, y = i.t, b = y - c, S = null == s ? r() : s; for (h.dlShiftTo(b, S), i.compareTo(S) >= 0 && (i[i.t++] = 1, i.subTo(S, i)), e.ONE.dlShiftTo(c, S), S.subTo(h, h); h.t < c;) h[h.t++] = 0; for (; --b >= 0;) { var w = i[--y] == f ? this.DM: Math.floor(i[y] * g + (i[y - 1] + v) * d); if ((i[y] += h.am(0, w, i, b, 0, c)) < w) for (h.dlShiftTo(b, S), i.subTo(S, i); i[y] < --w;) i.subTo(S, i) } null != s && (i.drShiftTo(c, s), a != u && e.ZERO.subTo(s, s)), i.t = c, i.clamp(), p > 0 && i.rShiftTo(p, i), a < 0 && e.ZERO.subTo(i, i) } } } function O(t) { var s = r(); return this.abs().divRemTo(t, null, s), this.s < 0 && s.compareTo(e.ZERO) > 0 && t.subTo(s, s), s } function C(t) { this.m = t } function B(t) { return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t } function N(t) { return t } function M(t) { t.divRemTo(this.m, null, t) } function I(t, e, r) { t.multiplyTo(e, r), this.reduce(r) } function P(t, e) { t.squareTo(e), this.reduce(e) } function V() { 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 k(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 H(t) { var s = r(); return t.abs().dlShiftTo(this.m.t, s), s.divRemTo(this.m, null, s), t.s < 0 && s.compareTo(e.ZERO) > 0 && this.m.subTo(s, s), s } function R(t) { var e = r(); return t.copyTo(e), this.reduce(e), e } function _(t) { for (; t.t <= this.mt2;) t[t.t++] = 0; for (var e = 0; e < this.m.t; ++e) { var r = 32767 & t[e], s = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM; for (r = e + this.m.t, t[r] += this.m.am(0, s, t, e, 0, this.m.t); t[r] >= t.DV;) t[r] -= t.DV, t[++r]++ } t.clamp(), t.drShiftTo(this.m.t, t), t.compareTo(this.m) >= 0 && t.subTo(this.m, t) } function L(t, e) { t.squareTo(e), this.reduce(e) } function F(t, e, r) { t.multiplyTo(e, r), this.reduce(r) } function q() { return 0 == (this.t > 0 ? 1 & this[0] : this.s) } function U(t, s) { if (t > 4294967295 || t < 1) return e.ONE; var i = r(), n = r(), o = s.convert(this), h = m(t) - 1; for (o.copyTo(i); --h >= 0;) if (s.sqrTo(i, n), (t & 1 << h) > 0) s.mulTo(n, o, i); else { var a = i; i = n, n = a } return s.revert(i) } function Z(t, e) { var r; return r = t < 256 || e.isEven() ? new C(e) : new k(e), this.exp(t, r) } function j() { this.i = 0, this.j = 0, this.S = new Array } function K(t) { var e, r, s; for (e = 0; e < 256; ++e) this.S[e] = e; for (r = 0, e = 0; e < 256; ++e) r = r + this.S[e] + t[e % t.length] & 255, s = this.S[e], this.S[e] = this.S[r], this.S[r] = s; this.i = 0, this.j = 0 } function z() { 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 G() { return new j } function J() { if (null == ft) { for (ft = G(); gt < dt;) { var t = Math.floor(65536 * Math.random()); lt[gt++] = 255 & t } for (ft.init(lt), gt = 0; gt < lt.length; ++gt) lt[gt] = 0; gt = 0 } return ft.next() } function Q(t) { var e; for (e = 0; e < t.length; ++e) t[e] = J() } function X() {} function $(t, r) { return new e(t, r) } function W(t, r) { if (r < t.length + 11) return console.error("Message too long for RSA"), null; for (var s = new Array, i = t.length - 1; i >= 0 && r > 0;) { var n = t.charCodeAt(i--); n < 128 ? s[--r] = n: n > 127 && n < 2048 ? (s[--r] = 63 & n | 128, s[--r] = n >> 6 | 192) : (s[--r] = 63 & n | 128, s[--r] = n >> 6 & 63 | 128, s[--r] = n >> 12 | 224) } s[--r] = 0; for (var o = new X, h = new Array; r > 2;) { for (h[0] = 0; 0 == h[0];) o.nextBytes(h); s[--r] = h[0] } return s[--r] = 2, s[--r] = 0, new e(s) } function Y() { 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 tt(t, e) { null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = $(t, 16), this.e = parseInt(e, 16)) : console.error("Invalid RSA public key") } function et(t) { return t.modPowInt(this.e, this.n) } function rt(t) { var e = W(t, this.n.bitLength() + 7 >> 3); if (null == e) return null; var r = this.doPublic(e); if (null == r) return null; var s = r.toString(16); return 0 == (1 & s.length) ? s: "0" + s } function st(t) { var e, r, s = ""; for (e = 0; e + 3 <= t.length; e += 3) r = parseInt(t.substring(e, e + 3), 16), s += bt.charAt(r >> 6) + bt.charAt(63 & r); for (e + 1 == t.length ? (r = parseInt(t.substring(e, e + 1), 16), s += bt.charAt(r << 2)) : e + 2 == t.length && (r = parseInt(t.substring(e, e + 2), 16), s += bt.charAt(r >> 2) + bt.charAt((3 & r) << 4)); (3 & s.length) > 0;) s += St; return s } // Copyright (c) 2005 Tom Wu // All Rights Reserved. // See "LICENSE" for details. var it, nt = 0xdeadbeefcafe, ot = 15715070 == (16777215 & nt); ot && "Microsoft Internet Explorer" == navigator.appName ? (e.prototype.am = i, it = 30) : ot && "Netscape" != navigator.appName ? (e.prototype.am = s, it = 26) : (e.prototype.am = n, it = 28), e.prototype.DB = it, e.prototype.DM = (1 << it) - 1, e.prototype.DV = 1 << it; var ht = 52; e.prototype.FV = Math.pow(2, ht), e.prototype.F1 = ht - it, e.prototype.F2 = 2 * it - ht; var at, ut, pt = "0123456789abcdefghijklmnopqrstuvwxyz", ct = new Array; for (at = "0".charCodeAt(0), ut = 0; ut <= 9; ++ut) ct[at++] = ut; for (at = "a".charCodeAt(0), ut = 10; ut < 36; ++ut) ct[at++] = ut; for (at = "A".charCodeAt(0), ut = 10; ut < 36; ++ut) ct[at++] = ut; C.prototype.convert = B, C.prototype.revert = N, C.prototype.reduce = M, C.prototype.mulTo = I, C.prototype.sqrTo = P, k.prototype.convert = H, k.prototype.revert = R, k.prototype.reduce = _, k.prototype.mulTo = F, k.prototype.sqrTo = L, e.prototype.copyTo = a, e.prototype.fromInt = u, e.prototype.fromString = c, e.prototype.clamp = f, e.prototype.dlShiftTo = b, e.prototype.drShiftTo = S, e.prototype.lShiftTo = w, e.prototype.rShiftTo = x, e.prototype.subTo = T, e.prototype.multiplyTo = D, e.prototype.squareTo = E, e.prototype.divRemTo = A, e.prototype.invDigit = V, e.prototype.isEven = q, e.prototype.exp = U, e.prototype.toString = l, e.prototype.negate = g, e.prototype.abs = d, e.prototype.compareTo = v, e.prototype.bitLength = y, e.prototype.mod = O, e.prototype.modPowInt = Z, e.ZERO = p(0), e.ONE = p(1), j.prototype.init = K, j.prototype.next = z; var ft, lt, gt, dt = 256; if (null == lt) { lt = new Array, gt = 0; var vt; if (window.crypto && window.crypto.getRandomValues) { var mt = new Uint32Array(256); for (window.crypto.getRandomValues(mt), vt = 0; vt < mt.length; ++vt) lt[gt++] = 255 & mt[vt] } var yt = function(t) { if (this.count = this.count || 0, this.count >= 256 || gt >= dt) return void(window.removeEventListener ? window.removeEventListener("mousemove", yt, !1) : window.detachEvent && window.detachEvent("onmousemove", yt)); try { var e = t.x + t.y; lt[gt++] = 255 & e, this.count += 1 } catch(r) {} }; window.addEventListener ? window.addEventListener("mousemove", yt, !1) : window.attachEvent && window.attachEvent("onmousemove", yt) } X.prototype.nextBytes = Q, Y.prototype.doPublic = et, Y.prototype.setPublic = tt, Y.prototype.encrypt = rt; var bt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", St = "="; // 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, r = {}; r.decode = function(r) { var s; if (e === t) { var i = "0123456789ABCDEF", n = " \f\n\r\t?\u2028\u2029"; for (e = [], s = 0; s < 16; ++s) e[i.charAt(s)] = s; for (i = i.toLowerCase(), s = 10; s < 16; ++s) e[i.charAt(s)] = s; for (s = 0; s < n.length; ++s) e[n.charAt(s)] = -1 } var o = [], h = 0, a = 0; for (s = 0; s < r.length; ++s) { var u = r.charAt(s); if ("=" == u) break; if (u = e[u], u != -1) { if (u === t) throw "Illegal character at offset " + s; 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 = r } (), // 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, r = {}; r.decode = function(r) { var s; if (e === t) { var i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", n = "= \f\n\r\t?\u2028\u2029"; for (e = [], s = 0; s < 64; ++s) e[i.charAt(s)] = s; for (s = 0; s < n.length; ++s) e[n.charAt(s)] = -1 } var o = [], h = 0, a = 0; for (s = 0; s < r.length; ++s) { var u = r.charAt(s); if ("=" == u) break; if (u = e[u], u != -1) { if (u === t) throw "Illegal character at offset " + s; 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 }, r.re = /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/, r.unarmor = function(t) { var e = r.re.exec(t); if (e) if (e[1]) t = e[1]; else { if (!e[2]) throw "RegExp out of sync"; t = e[2] } return r.decode(t) }, window.Base64 = r } (), // 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, r) { t instanceof e ? (this.enc = t.enc, this.pos = t.pos) : (this.enc = t, this.pos = r) } function r(t, e, r, s, i) { this.stream = t, this.header = e, this.length = r, this.tag = s, this.sub = i } var s = 100, i = "…", n = { tag: function(t, e) { var r = document.createElement(t); return r.className = e, r }, 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, r) { for (var s = "", i = t; i < e; ++i) if (s += this.hexByte(this.get(i)), r !== !0) switch (15 & i) { case 7: s += " "; break; case 15: s += "\n"; break; default: s += " " } return s }, e.prototype.parseStringISO = function(t, e) { for (var r = "", s = t; s < e; ++s) r += String.fromCharCode(this.get(s)); return r }, e.prototype.parseStringUTF = function(t, e) { for (var r = "", s = t; s < e;) { var i = this.get(s++); r += i < 128 ? String.fromCharCode(i) : i > 191 && i < 224 ? String.fromCharCode((31 & i) << 6 | 63 & this.get(s++)) : String.fromCharCode((15 & i) << 12 | (63 & this.get(s++)) << 6 | 63 & this.get(s++)) } return r }, e.prototype.parseStringBMP = function(t, e) { for (var r = "", s = t; s < e; s += 2) { var i = this.get(s), n = this.get(s + 1); r += String.fromCharCode((i << 8) + n) } return r }, 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 r = this.parseStringISO(t, e), s = this.reTime.exec(r); return s ? (r = s[1] + "-" + s[2] + "-" + s[3] + " " + s[4], s[5] && (r += ":" + s[5], s[6] && (r += ":" + s[6], s[7] && (r += "." + s[7]))), s[8] && (r += " UTC", "Z" != s[8] && (r += s[8], s[9] && (r += ":" + s[9]))), r) : "Unrecognized time: " + r }, e.prototype.parseInteger = function(t, e) { var r = e - t; if (r > 4) { r <<= 3; var s = this.get(t); if (0 === s) r -= 8; else for (; s < 128;) s <<= 1, --r; return "(" + r + " bit)" } for (var i = 0, n = t; n < e; ++n) i = i << 8 | this.get(n); return i }, e.prototype.parseBitString = function(t, e) { var r = this.get(t), s = (e - t - 1 << 3) - r, i = "(" + s + " bit)"; if (s <= 20) { var n = r; i += " "; for (var o = e - 1; o > t; --o) { for (var h = this.get(o), a = n; a < 8; ++a) i += h >> a & 1 ? "1": "0"; n = 0 } } return i }, e.prototype.parseOctetString = function(t, e) { var r = e - t, n = "(" + r + " byte) "; r > s && (e = t + s); for (var o = t; o < e; ++o) n += this.hexByte(this.get(o)); return r > s && (n += i), n }, e.prototype.parseOID = function(t, e) { for (var r = "", s = 0, i = 0, n = t; n < e; ++n) { var o = this.get(n); if (s = s << 7 | 127 & o, i += 7, !(128 & o)) { if ("" === r) { var h = s < 80 ? s < 40 ? 0 : 1 : 2; r = h + "." + (s - 40 * h) } else r += "." + (i >= 31 ? "bigint": s); s = i = 0 } } return r }, r.prototype.typeName = function() { if (this.tag === t) return "unknown"; var e = this.tag >> 6, r = (this.tag >> 5 & 1, 31 & this.tag); switch (e) { case 0: switch (r) { 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_" + r.toString(16) } case 1: return "Application_" + r.toString(16); case 2: return "[" + r + "]"; case 3: return "Private_" + r.toString(16) } }, r.prototype.reSeemsASCII = /^[ -~]+$/, r.prototype.content = function() { if (this.tag === t) return null; var e = this.tag >> 6, r = 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, s)); return this.reSeemsASCII.test(h) ? h.substring(0, 2 * s) + (h.length > 2 * s ? i: "") : this.stream.parseOctetString(n, n + o) } switch (r) { 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 }, r.prototype.toString = function() { return this.typeName() + "@" + this.stream.pos + "[header:" + this.header + ",length:" + this.length + ",sub:" + (null === this.sub ? "null": this.sub.length) + "]" }, r.prototype.print = function(e) { if (e === t && (e = ""), document.writeln(e + this), null !== this.sub) { e += " "; for (var r = 0, s = this.sub.length; r < s; ++r) this.sub[r].print(e) } }, r.prototype.toPrettyString = function(e) { e === t && (e = ""); var r = e + this.typeName() + " @" + this.stream.pos; if (this.length >= 0 && (r += "+"), r += this.length, 32 & this.tag ? r += " (constructed)": 3 != this.tag && 4 != this.tag || null === this.sub || (r += " (encapsulates)"), r += "\n", null !== this.sub) { e += " "; for (var s = 0, i = this.sub.length; s < i; ++s) r += this.sub[s].toPrettyString(e) } return r }, r.prototype.toDOM = function() { var t = n.tag("div", "node"); t.asn1 = this; var e = n.tag("div", "head"), r = this.typeName().replace(/_/g, " "); e.innerHTML = r; var s = this.content(); if (null !== s) { s = String(s).replace(/</g, "<"); var i = n.tag("span", "preview"); i.appendChild(n.text(s)), e.appendChild(i) } t.appendChild(e), this.node = t, this.head = e; var o = n.tag("div", "value"); if (r = "Offset: " + this.stream.pos + "<br/>", r += "Length: " + this.header + "+", r += this.length >= 0 ? this.length: -this.length + " (undefined)", 32 & this.tag ? r += "<br/>(constructed)": 3 != this.tag && 4 != this.tag || null === this.sub || (r += "<br/>(encapsulates)"), null !== s && (r += "<br/>Value:<br/><b>" + s + "</b>", "object" == typeof oids && 6 == this.tag)) { var h = oids[s]; h && (h.d && (r += "<br/>" + h.d), h.c && (r += "<br/>" + h.c), h.w && (r += "<br/>(warning!)")) } o.innerHTML = r, t.appendChild(o); var a = n.tag("div", "sub"); if (null !== this.sub) for (var u = 0, p = this.sub.length; u < p; ++u) a.appendChild(this.sub[u].toDOM()); return t.appendChild(a), e.onclick = function() { t.className = "node collapsed" == t.className ? "node": "node collapsed" }, t }, r.prototype.posStart = function() { return this.stream.pos }, r.prototype.posContent = function() { return this.stream.pos + this.header }, r.prototype.posEnd = function() { return this.stream.pos + this.header + Math.abs(this.length) }, r.prototype.fakeHover = function(t) { this.node.className += " hover", t && (this.head.className += " hover") }, r.prototype.fakeOut = function(t) { var e = / ?hover/; this.node.className = this.node.className.replace(e, ""), t && (this.head.className = this.head.className.replace(e, "")) }, r.prototype.toHexDOM_sub = function(t, e, r, s, i) { if (! (s >= i)) { var o = n.tag("span", e); o.appendChild(n.text(r.hexDump(s, i))), t.appendChild(o) } }, r.prototype.toHexDOM = function(e) { var r = n.tag("span", "hex"); if (e === t && (e = r), this.head.hexNode = r, this.head.onmouseover = function() { this.hexNode.className = "hexCurrent" }, this.head.onmouseout = function() { this.hexNode.className = "hex" }, r.asn1 = this, r.onmouseover = function() { var t = !e.selected; t && (e.selected = this.asn1, this.className = "hexCurrent"), this.asn1.fakeHover(t) }, r.onmouseout = function() { var t = e.selected == this.asn1; this.asn1.fakeOut(t), t && (e.selected = null, this.className = "hex") }, this.toHexDOM_sub(r, "tag", this.stream, this.posStart(), this.posStart() + 1), this.toHexDOM_sub(r, this.length >= 0 ? "dlen": "ulen", this.stream, this.posStart() + 1, this.posContent()), null === this.sub) r.appendChild(n.text(this.stream.hexDump(this.posContent(), this.posEnd()))); else if (this.sub.length > 0) { var s = this.sub[0], i = this.sub[this.sub.length - 1]; this.toHexDOM_sub(r, "intro", this.stream, this.posContent(), s.posStart()); for (var o = 0, h = this.sub.length; o < h; ++o) r.appendChild(this.sub[o].toHexDOM(e)); this.toHexDOM_sub(r, "outro", this.stream, i.posEnd(), this.posEnd()) } return r }, r.prototype.toHexString = function(t) { return this.stream.hexDump(this.posStart(), this.posEnd(), !0) }, r.decodeLength = function(t) { var e = t.get(), r = 127 & e; if (r == e) return r; if (r > 3) throw "Length over 24 bits not supported at position " + (t.pos - 1); if (0 === r) return - 1; e = 0; for (var s = 0; s < r; ++s) e = e << 8 | t.get(); return e }, r.hasContent = function(t, s, i) { if (32 & t) return ! 0; if (t < 3 || t > 4) return ! 1; var n = new e(i); 3 == t && n.get(); var o = n.get(); if (o >> 6 & 1) return ! 1; try { var h = r.decodeLength(n); return n.pos - i.pos + h == s } catch(a) { return ! 1 } }, r.decode = function(t) { t instanceof e || (t = new e(t, 0)); var s = new e(t), i = t.get(), n = r.decodeLength(t), o = t.pos - s.pos, h = null; if (r.hasContent(i, n, t)) { var a = t.pos; if (3 == i && t.get(), h = [], n >= 0) { for (var u = a + n; t.pos < u;) h[h.length] = r.decode(t); if (t.pos != u) throw "Content size is not correct for container starting at offset " + a } else try { for (;;) { var p = r.decode(t); if (0 === p.tag) break; h[h.length] = p } n = a - t.pos } catch(c) { throw "Exception while decoding undefined length content: " + c } } else t.pos += n; return new r(s, o, n, i, h) }, r.test = function() { for (var t = [{ value: [39], expected: 39 }, { value: [129, 201], expected: 201 }, { value: [131, 254, 220, 186], expected: 16702650 }], s = 0, i = t.length; s < i; ++s) { var n = new e(t[s].value, 0), o = r.decodeLength(n); o != t[s].expected && document.write("In test[" + s + "] expected " + t[s].expected + " got " + o + "\n") } }, window.ASN1 = r } (), ASN1.prototype.getHexStringValue = function() { var t = this.toHexString(), e = 2 * this.header, r = 2 * this.length; return t.substr(e, r) }, Y.prototype.parseKey = function(t) { try { var e = 0, r = 0, s = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/, i = s.test(t) ? Hex.decode(t) : Base64.unarmor(t), n = ASN1.decode(i); if (3 === n.sub.length && (n = n.sub[2].sub[0]), 9 === n.sub.length) { e = n.sub[1].getHexStringValue(), this.n = $(e, 16), r = n.sub[2].getHexStringValue(), this.e = parseInt(r, 16); var o = n.sub[3].getHexStringValue(); this.d = $(o, 16); var h = n.sub[4].getHexStringValue(); this.p = $(h, 16); var a = n.sub[5].getHexStringValue(); this.q = $(a, 16); var u = n.sub[6].getHexStringValue(); this.dmp1 = $(u, 16); var p = n.sub[7].getHexStringValue(); this.dmq1 = $(p, 16); var c = n.sub[8].getHexStringValue(); this.coeff = $(c, 16) } else { if (2 !== n.sub.length) return ! 1; var f = n.sub[1], l = f.sub[0]; e = l.sub[0].getHexStringValue(), this.n = $(e, 16), r = l.sub[1].getHexStringValue(), this.e = parseInt(r, 16) } return ! 0 } catch(g) { return ! 1 } }, Y.prototype.hasPublicKeyProperty = function(t) { return t = t || {}, t.hasOwnProperty("n") && t.hasOwnProperty("e") }, Y.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") }, Y.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 wt = function(t) { Y.call(this), t && ("string" == typeof t ? this.parseKey(t) : (this.hasPrivateKeyProperty(t) || this.hasPublicKeyProperty(t)) && this.parsePropertiesFrom(t)) }; wt.prototype = new Y, wt.prototype.constructor = wt; var xt = 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 }; xt.prototype.setKey = function(t) { this.log && this.key && console.warn("A key was already set, overriding existing."), this.key = new wt(t) }, xt.prototype.setPublicKey = function(t) { this.setKey(t) }, xt.prototype.encrypt = function(t) { try { return st(this.getKey().encrypt(t)) } catch(e) { return ! 1 } }, xt.prototype.getKey = function(t) { if (!this.key) { if (this.key = new wt, 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 }, xt.version = "2.3.1", t.JSEncrypt = xt }); function js(pwd) { t = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApCNjsTlE3AIR1YXyhE9M5SQ9xf1o0 + W528nLdvI7ZmCOdFMed8SA3L91YFP + 8wBl1we6BwVQBHo / 4OQwUNlwVE7BgtsV5D67 / rR74d0vGJNLBNMx6V3D / Uf + QgXBlPESWRwRkkHl2RbzTWbI60X0mLTxkvvpEYSvgFytlv5QL + on3TKp / Q4UiUk4MmWnY1taNLw7rAM8 / HXYotC + jnhMgjvYEf5Ank / F0Tm4WZq / QlJcT2pOEN8vanGT325XhyshdqZJgG2IT1nt5EdtVjXySF9AMpnA2Cmz35Qygy / rx3 + 0 + 82yBpCgxjv0O7pYvtJ5tIXWkcUB3V6HtXiCkMNWRwIDAQAB ", n = 2048; var r = new JSEncrypt({ default_key_size: n }) r.setPublicKey(t); return r.encrypt(pwd); } 调用方法:js("admin123")