陆金所JS代码
window = this;
navigator={}
function BigInteger(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 nbi() {
return new BigInteger(null)
}
function am1(t, e, r, n, i, o) {
for (; --o >= 0; ) {
var a = e * this[t++] + r[n] + i;
i = Math.floor(a / 67108864),
r[n++] = 67108863 & a
}
return i
}
function am2(t, e, r, n, i, o) {
for (var a = 32767 & e, s = e >> 15; --o >= 0; ) {
var c = 32767 & this[t]
, h = this[t++] >> 15
, u = s * c + h * a;
c = a * c + ((32767 & u) << 15) + r[n] + (1073741823 & i),
i = (c >>> 30) + (u >>> 15) + s * h + (i >>> 30),
r[n++] = 1073741823 & c
}
return i
}
function am3(t, e, r, n, i, o) {
for (var a = 16383 & e, s = e >> 14; --o >= 0; ) {
var c = 16383 & this[t]
, h = this[t++] >> 14
, u = s * c + h * a;
c = a * c + ((16383 & u) << 14) + r[n] + i,
i = (c >> 28) + (u >> 14) + s * h,
r[n++] = 268435455 & c
}
return i
}
function int2char(t) {
return BI_RM.charAt(t)
}
function intAt(t, e) {
var r = BI_RC[t.charCodeAt(e)];
return null == r ? -1 : r
}
function bnpCopyTo(t) {
for (var e = this.t - 1; e >= 0; --e)
t[e] = this[e];
t.t = this.t,
t.s = this.s
}
function bnpFromInt(t) {
this.t = 1,
this.s = t < 0 ? -1 : 0,
t > 0 ? this[0] = t : t < -1 ? this[0] = t + DV : this.t = 0
}
function nbv(t) {
var e = nbi();
return e.fromInt(t),
e
}
function bnpFromString(t, e) {
var r;
if (16 == e)
r = 4;
else if (8 == e)
r = 3;
else if (256 == e)
r = 8;
else if (2 == e)
r = 1;
else if (32 == e)
r = 5;
else {
if (4 != e)
return void this.fromRadix(t, e);
r = 2
}
this.t = 0,
this.s = 0;
for (var n = t.length, i = !1, o = 0; --n >= 0; ) {
var a = 8 == r ? 255 & t[n] : intAt(t, n);
a < 0 ? "-" == t.charAt(n) && (i = !0) : (i = !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(),
i && BigInteger.ZERO.subTo(this, this)
}
function bnpClamp() {
for (var t = this.s & this.DM; this.t > 0 && this[this.t - 1] == t; )
--this.t
}
function bnToString(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, n = (1 << e) - 1, i = !1, o = "", a = this.t, s = this.DB - a * this.DB % e;
if (a-- > 0)
for (s < this.DB && (r = this[a] >> s) > 0 && (i = !0,
o = int2char(r)); a >= 0; )
s < e ? (r = (this[a] & (1 << s) - 1) << e - s,
r |= this[--a] >> (s += this.DB - e)) : (r = this[a] >> (s -= e) & n,
s <= 0 && (s += this.DB,
--a)),
r > 0 && (i = !0),
i && (o += int2char(r));
return i ? o : "0"
}
function bnNegate() {
var t = nbi();
return BigInteger.ZERO.subTo(this, t),
t
}
function bnAbs() {
return this.s < 0 ? this.negate() : this
}
function bnCompareTo(t) {
var e = this.s - t.s;
if (0 != e)
return e;
var r = this.t;
if (e = r - t.t,
0 != e)
return e;
for (; --r >= 0; )
if (0 != (e = this[r] - t[r]))
return e;
return 0
}
function nbits(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 bnBitLength() {
return this.t <= 0 ? 0 : this.DB * (this.t - 1) + nbits(this[this.t - 1] ^ this.s & this.DM)
}
function bnpDLShiftTo(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 bnpDRShiftTo(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 bnpLShiftTo(t, e) {
var r, n = t % this.DB, i = this.DB - n, o = (1 << i) - 1, a = Math.floor(t / this.DB), s = this.s << n & this.DM;
for (r = this.t - 1; r >= 0; --r)
e[r + a + 1] = this[r] >> i | s,
s = (this[r] & o) << n;
for (r = a - 1; r >= 0; --r)
e[r] = 0;
e[a] = s,
e.t = this.t + a + 1,
e.s = this.s,
e.clamp()
}
function bnpRShiftTo(t, e) {
e.s = this.s;
var r = Math.floor(t / this.DB);
if (r >= this.t)
return void (e.t = 0);
var n = t % this.DB
, i = this.DB - n
, o = (1 << n) - 1;
e[0] = this[r] >> n;
for (var a = r + 1; a < this.t; ++a)
e[a - r - 1] |= (this[a] & o) << i,
e[a - r] = this[a] >> n;
n > 0 && (e[this.t - r - 1] |= (this.s & o) << i),
e.t = this.t - r,
e.clamp()
}
function bnpSubTo(t, e) {
for (var r = 0, n = 0, i = Math.min(t.t, this.t); r < i; )
n += this[r] - t[r],
e[r++] = n & this.DM,
n >>= this.DB;
if (t.t < this.t) {
for (n -= t.s; r < this.t; )
n += this[r],
e[r++] = n & this.DM,
n >>= this.DB;
n += this.s
} else {
for (n += this.s; r < t.t; )
n -= t[r],
e[r++] = n & this.DM,
n >>= this.DB;
n -= t.s
}
e.s = n < 0 ? -1 : 0,
n < -1 ? e[r++] = this.DV + n : n > 0 && (e[r++] = n),
e.t = r,
e.clamp()
}
function bnpMultiplyTo(t, e) {
var r = this.abs()
, n = t.abs()
, i = r.t;
for (e.t = i + n.t; --i >= 0; )
e[i] = 0;
for (i = 0; i < n.t; ++i)
e[i + r.t] = r.am(0, n[i], e, i, 0, r.t);
e.s = 0,
e.clamp(),
this.s != t.s && BigInteger.ZERO.subTo(e, e)
}
function bnpSquareTo(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 n = 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, n, 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 bnpDivRemTo(t, e, r) {
var n = t.abs();
if (!(n.t <= 0)) {
var i = this.abs();
if (i.t < n.t)
return null != e && e.fromInt(0),
void (null != r && this.copyTo(r));
null == r && (r = nbi());
var o = nbi()
, a = this.s
, s = t.s
, c = this.DB - nbits(n[n.t - 1]);
c > 0 ? (n.lShiftTo(c, o),
i.lShiftTo(c, r)) : (n.copyTo(o),
i.copyTo(r));
var h = o.t
, u = o[h - 1];
if (0 != u) {
var p = u * (1 << this.F1) + (h > 1 ? o[h - 2] >> this.F2 : 0)
, g = this.FV / p
, f = (1 << this.F1) / p
, l = 1 << this.F2
, d = r.t
, m = d - h
, v = null == e ? nbi() : e;
for (o.dlShiftTo(m, v),
r.compareTo(v) >= 0 && (r[r.t++] = 1,
r.subTo(v, r)),
BigInteger.ONE.dlShiftTo(h, v),
v.subTo(o, o); o.t < h; )
o[o.t++] = 0;
for (; --m >= 0; ) {
var _ = r[--d] == u ? this.DM : Math.floor(r[d] * g + (r[d - 1] + l) * f);
if ((r[d] += o.am(0, _, r, m, 0, h)) < _)
for (o.dlShiftTo(m, v),
r.subTo(v, r); r[d] < --_; )
r.subTo(v, r)
}
null != e && (r.drShiftTo(h, e),
a != s && BigInteger.ZERO.subTo(e, e)),
r.t = h,
r.clamp(),
c > 0 && r.rShiftTo(c, r),
a < 0 && BigInteger.ZERO.subTo(r, r)
}
}
}
function bnMod(t) {
var e = nbi();
return this.abs().divRemTo(t, null, e),
this.s < 0 && e.compareTo(BigInteger.ZERO) > 0 && t.subTo(e, e),
e
}
function Classic(t) {
this.m = t
}
function cConvert(t) {
return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t
}
function cRevert(t) {
return t
}
function cReduce(t) {
t.divRemTo(this.m, null, t)
}
function cMulTo(t, e, r) {
t.multiplyTo(e, r),
this.reduce(r)
}
function cSqrTo(t, e) {
t.squareTo(e),
this.reduce(e)
}
function bnpInvDigit() {
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 Montgomery(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 montConvert(t) {
var e = nbi();
return t.abs().dlShiftTo(this.m.t, e),
e.divRemTo(this.m, null, e),
t.s < 0 && e.compareTo(BigInteger.ZERO) > 0 && this.m.subTo(e, e),
e
}
function montRevert(t) {
var e = nbi();
return t.copyTo(e),
this.reduce(e),
e
}
function montReduce(t) {
for (; t.t <= this.mt2; )
t[t.t++] = 0;
for (var e = 0; e < this.m.t; ++e) {
var r = 32767 & t[e]
, n = 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, n, 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 montSqrTo(t, e) {
t.squareTo(e),
this.reduce(e)
}
function montMulTo(t, e, r) {
t.multiplyTo(e, r),
this.reduce(r)
}
function bnpIsEven() {
return 0 == (this.t > 0 ? 1 & this[0] : this.s)
}
function bnpExp(t, e) {
if (t > 4294967295 || t < 1)
return BigInteger.ONE;
var r = nbi()
, n = nbi()
, i = e.convert(this)
, o = nbits(t) - 1;
for (i.copyTo(r); --o >= 0; )
if (e.sqrTo(r, n),
(t & 1 << o) > 0)
e.mulTo(n, i, r);
else {
var a = r;
r = n,
n = a
}
return e.revert(r)
}
function bnModPowInt(t, e) {
var r;
return r = t < 256 || e.isEven() ? new Classic(e) : new Montgomery(e),
this.exp(t, r)
}
function Arcfour() {
this.i = 0,
this.j = 0,
this.S = new Array
}
function ARC4init(t) {
var e, r, n;
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,
n = this.S[e],
this.S[e] = this.S[r],
this.S[r] = n;
this.i = 0,
this.j = 0
}
function ARC4next() {
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 prng_newstate() {
return new Arcfour
}
function rng_seed_int(t) {
rng_pool[rng_pptr++] ^= 255 & t,
rng_pool[rng_pptr++] ^= t >> 8 & 255,
rng_pool[rng_pptr++] ^= t >> 16 & 255,
rng_pool[rng_pptr++] ^= t >> 24 & 255,
rng_pptr >= rng_psize && (rng_pptr -= rng_psize)
}
function rng_seed_time() {
rng_seed_int((new Date).getTime())
}
function rng_get_byte() {
if (null == rng_state) {
for (rng_seed_time(),
rng_state = prng_newstate(),
rng_state.init(rng_pool),
rng_pptr = 0; rng_pptr < rng_pool.length; ++rng_pptr)
rng_pool[rng_pptr] = 0;
rng_pptr = 0
}
return rng_state.next()
}
function rng_get_bytes(t) {
var e;
for (e = 0; e < t.length; ++e)
t[e] = rng_get_byte()
}
function SecureRandom() {}
function parseBigInt(t, e) {
return new BigInteger(t,e)
}
function linebrk(t, e) {
for (var r = "", n = 0; n + e < t.length; )
r += t.substring(n, n + e) + "\n",
n += e;
return r + t.substring(n, t.length)
}
function byte2Hex(t) {
return t < 16 ? "0" + t.toString(16) : t.toString(16)
}
function pkcs1pad2(t, e) {
if (e < t.length + 2)
return alert("密码太长!"),
null;
var r = new Array
, n = t.length - 1
, i = t.length;
if (!(i < 100))
return alert("密码太长!"),
null;
r[0] = 48 + i / 10,
r[1] = 48 + i % 10;
var o = 2;
for (n = 0; n < i && e > 0; )
r[o++] = t.charCodeAt(n++);
for (var a = new SecureRandom, s = new Array; o < e; ) {
for (s[0] = 0; 0 == s[0]; )
a.nextBytes(s);
r[o++] = s[0]
}
return new BigInteger(r)
}
function RSAKey() {
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 RSASetPublic(t, e) {
null != t && null != e && t.length > 0 && e.length > 0 ? (this.n = parseBigInt(t, 16),
this.e = parseInt(e, 16)) : alert("Invalid RSA public key")
}
function RSADoPublic(t) {
return t.modPowInt(this.e, this.n)
}
function RSAEncrypt(t) {
var e = pkcs1pad2(t, this.n.bitLength() + 7 >> 3);
if (null == e)
return null;
var r = this.doPublic(e);
if (null == r)
return null;
for (var n = r.toString(16).toUpperCase(), i = 256 - n.length, o = 0; o < i; o += 1)
n = "0" + n;
return n
}
function hex2b64(t) {
var e, r, n = "";
for (e = 0; e + 3 <= t.length; e += 3)
r = parseInt(t.substring(e, e + 3), 16),
n += b64map.charAt(r >> 6) + b64map.charAt(63 & r);
for (e + 1 == t.length ? (r = parseInt(t.substring(e, e + 1), 16),
n += b64map.charAt(r << 2)) : e + 2 == t.length && (r = parseInt(t.substring(e, e + 2), 16),
n += b64map.charAt(r >> 2) + b64map.charAt((3 & r) << 4)); (3 & n.length) > 0; )
n += b64pad;
return n
}
function b64tohex(t) {
var e, r, n = "", i = 0;
for (e = 0; e < t.length && t.charAt(e) != b64pad; ++e)
v = b64map.indexOf(t.charAt(e)),
v < 0 || (0 == i ? (n += int2char(v >> 2),
r = 3 & v,
i = 1) : 1 == i ? (n += int2char(r << 2 | v >> 4),
r = 15 & v,
i = 2) : 2 == i ? (n += int2char(r),
n += int2char(v >> 2),
r = 3 & v,
i = 3) : (n += int2char(r << 2 | v >> 4),
n += int2char(15 & v),
i = 0));
return 1 == i && (n += int2char(r << 2)),
n
}
function b64toBA(t) {
var e, r = b64tohex(t), n = new Array;
for (e = 0; 2 * e < r.length; ++e)
n[e] = parseInt(r.substring(2 * e, 2 * e + 2), 16);
return n
}
window.lufax = window.lufax || {
version: "0.1.0"
},
lufax.util = lufax.util || {};
var dbits, canary = 0xdeadbeefcafe, j_lm = 15715070 == (16777215 & canary);
j_lm && "Microsoft Internet Explorer" == navigator.appName ? (BigInteger.prototype.am = am2,
dbits = 30) : j_lm && "Netscape" != navigator.appName ? (BigInteger.prototype.am = am1,
dbits = 26) : (BigInteger.prototype.am = am3,
dbits = 28),
BigInteger.prototype.DB = dbits,
BigInteger.prototype.DM = (1 << dbits) - 1,
BigInteger.prototype.DV = 1 << dbits;
var BI_FP = 52;
BigInteger.prototype.FV = Math.pow(2, BI_FP),
BigInteger.prototype.F1 = BI_FP - dbits,
BigInteger.prototype.F2 = 2 * dbits - BI_FP;
var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz", BI_RC = new Array, rr, vv;
for (rr = "0".charCodeAt(0),
vv = 0; vv <= 9; ++vv)
BI_RC[rr++] = vv;
for (rr = "a".charCodeAt(0),
vv = 10; vv < 36; ++vv)
BI_RC[rr++] = vv;
for (rr = "A".charCodeAt(0),
vv = 10; vv < 36; ++vv)
BI_RC[rr++] = vv;
Classic.prototype.convert = cConvert,
Classic.prototype.revert = cRevert,
Classic.prototype.reduce = cReduce,
Classic.prototype.mulTo = cMulTo,
Classic.prototype.sqrTo = cSqrTo,
Montgomery.prototype.convert = montConvert,
Montgomery.prototype.revert = montRevert,
Montgomery.prototype.reduce = montReduce,
Montgomery.prototype.mulTo = montMulTo,
Montgomery.prototype.sqrTo = montSqrTo,
BigInteger.prototype.copyTo = bnpCopyTo,
BigInteger.prototype.fromInt = bnpFromInt,
BigInteger.prototype.fromString = bnpFromString,
BigInteger.prototype.clamp = bnpClamp,
BigInteger.prototype.dlShiftTo = bnpDLShiftTo,
BigInteger.prototype.drShiftTo = bnpDRShiftTo,
BigInteger.prototype.lShiftTo = bnpLShiftTo,
BigInteger.prototype.rShiftTo = bnpRShiftTo,
BigInteger.prototype.subTo = bnpSubTo,
BigInteger.prototype.multiplyTo = bnpMultiplyTo,
BigInteger.prototype.squareTo = bnpSquareTo,
BigInteger.prototype.divRemTo = bnpDivRemTo,
BigInteger.prototype.invDigit = bnpInvDigit,
BigInteger.prototype.isEven = bnpIsEven,
BigInteger.prototype.exp = bnpExp,
BigInteger.prototype.toString = bnToString,
BigInteger.prototype.negate = bnNegate,
BigInteger.prototype.abs = bnAbs,
BigInteger.prototype.compareTo = bnCompareTo,
BigInteger.prototype.bitLength = bnBitLength,
BigInteger.prototype.mod = bnMod,
BigInteger.prototype.modPowInt = bnModPowInt,
BigInteger.ZERO = nbv(0),
BigInteger.ONE = nbv(1),
Arcfour.prototype.init = ARC4init,
Arcfour.prototype.next = ARC4next;
var rng_psize = 256, rng_state, rng_pool, rng_pptr;
if (null == rng_pool) {
rng_pool = new Array,
rng_pptr = 0;
var t;
if ("Netscape" == navigator.appName && navigator.appVersion < "5" && window.crypto) {
var z = window.crypto.random(32);
for (t = 0; t < z.length; ++t)
rng_pool[rng_pptr++] = 255 & z.charCodeAt(t)
}
for (; rng_pptr < rng_psize; )
t = Math.floor(65536 * Math.random()),
rng_pool[rng_pptr++] = t >>> 8,
rng_pool[rng_pptr++] = 255 & t;
rng_pptr = 0,
rng_seed_time()
}
SecureRandom.prototype.nextBytes = rng_get_bytes,
RSAKey.prototype.doPublic = RSADoPublic,
RSAKey.prototype.setPublic = RSASetPublic,
RSAKey.prototype.encrypt = RSAEncrypt;
var b64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
, b64pad = "="
, CryptoJS = CryptoJS || function(t, e) {
var r = {}
, n = r.lib = {}
, i = function() {}
, o = n.Base = {
extend: function(t) {
i.prototype = this;
var e = new i;
return t && e.mixIn(t),
e.hasOwnProperty("init") || (e.init = function() {
e.$super.init.apply(this, arguments)
}
),
e.init.prototype = e,
e.$super = this,
e
},
create: function() {
var t = this.extend();
return t.init.apply(t, arguments),
t
},
init: function() {},
mixIn: function(t) {
for (var e in t)
t.hasOwnProperty(e) && (this[e] = t[e]);
t.hasOwnProperty("toString") && (this.toString = t.toString)
},
clone: function() {
return this.init.prototype.extend(this)
}
}
, a = n.WordArray = o.extend({
init: function(t, r) {
t = this.words = t || [],
this.sigBytes = r != e ? r : 4 * t.length
},
toString: function(t) {
return (t || c).stringify(this)
},
concat: function(t) {
var e = this.words
, r = t.words
, n = this.sigBytes;
if (t = t.sigBytes,
this.clamp(),
n % 4)
for (var i = 0; i < t; i++)
e[n + i >>> 2] |= (r[i >>> 2] >>> 24 - 8 * (i % 4) & 255) << 24 - 8 * ((n + i) % 4);
else if (65535 < r.length)
for (i = 0; i < t; i += 4)
e[n + i >>> 2] = r[i >>> 2];
else
e.push.apply(e, r);
return this.sigBytes += t,
this
},
clamp: function() {
var e = this.words
, r = this.sigBytes;
e[r >>> 2] &= 4294967295 << 32 - 8 * (r % 4),
e.length = t.ceil(r / 4)
},
clone: function() {
var t = o.clone.call(this);
return t.words = this.words.slice(0),
t
},
random: function(e) {
for (var r = [], n = 0; n < e; n += 4)
r.push(4294967296 * t.random() | 0);
return new a.init(r,e)
}
})
, s = r.enc = {}
, c = s.Hex = {
stringify: function(t) {
var e = t.words;
t = t.sigBytes;
for (var r = [], n = 0; n < t; n++) {
var i = e[n >>> 2] >>> 24 - 8 * (n % 4) & 255;
r.push((i >>> 4).toString(16)),
r.push((15 & i).toString(16))
}
return r.join("")
},
parse: function(t) {
for (var e = t.length, r = [], n = 0; n < e; n += 2)
r[n >>> 3] |= parseInt(t.substr(n, 2), 16) << 24 - 4 * (n % 8);
return new a.init(r,e / 2)
}
}
, h = s.Latin1 = {
stringify: function(t) {
var e = t.words;
t = t.sigBytes;
for (var r = [], n = 0; n < t; n++)
r.push(String.fromCharCode(e[n >>> 2] >>> 24 - 8 * (n % 4) & 255));
return r.join("")
},
parse: function(t) {
for (var e = t.length, r = [], n = 0; n < e; n++)
r[n >>> 2] |= (255 & t.charCodeAt(n)) << 24 - 8 * (n % 4);
return new a.init(r,e)
}
}
, u = s.Utf8 = {
stringify: function(t) {
try {
return decodeURIComponent(escape(h.stringify(t)))
} catch (e) {
throw Error("Malformed UTF-8 data")
}
},
parse: function(t) {
return h.parse(unescape(encodeURIComponent(t)))
}
}
, p = n.BufferedBlockAlgorithm = o.extend({
reset: function() {
this._data = new a.init,
this._nDataBytes = 0
},
_append: function(t) {
"string" == typeof t && (t = u.parse(t)),
this._data.concat(t),
this._nDataBytes += t.sigBytes
},
_process: function(e) {
var r = this._data
, n = r.words
, i = r.sigBytes
, o = this.blockSize
, s = i / (4 * o)
, s = e ? t.ceil(s) : t.max((0 | s) - this._minBufferSize, 0);
if (e = s * o,
i = t.min(4 * e, i),
e) {
for (var c = 0; c < e; c += o)
this._doProcessBlock(n, c);
c = n.splice(0, e),
r.sigBytes -= i
}
return new a.init(c,i)
},
clone: function() {
var t = o.clone.call(this);
return t._data = this._data.clone(),
t
},
_minBufferSize: 0
});
n.Hasher = p.extend({
cfg: o.extend(),
init: function(t) {
this.cfg = this.cfg.extend(t),
this.reset()
},
reset: function() {
p.reset.call(this),
this._doReset()
},
update: function(t) {
return this._append(t),
this._process(),
this
},
finalize: function(t) {
return t && this._append(t),
this._doFinalize()
},
blockSize: 16,
_createHelper: function(t) {
return function(e, r) {
return new t.init(r).finalize(e)
}
},
_createHmacHelper: function(t) {
return function(e, r) {
return new g.HMAC.init(t,r).finalize(e)
}
}
});
var g = r.algo = {};
return r
}(Math);
!function() {
var t = CryptoJS
, e = t.lib.WordArray;
t.enc.Base64 = {
stringify: function(t) {
var e = t.words
, r = t.sigBytes
, n = this._map;
t.clamp(),
t = [];
for (var i = 0; i < r; i += 3)
for (var o = (e[i >>> 2] >>> 24 - 8 * (i % 4) & 255) << 16 | (e[i + 1 >>> 2] >>> 24 - 8 * ((i + 1) % 4) & 255) << 8 | e[i + 2 >>> 2] >>> 24 - 8 * ((i + 2) % 4) & 255, a = 0; 4 > a && i + .75 * a < r; a++)
t.push(n.charAt(o >>> 6 * (3 - a) & 63));
if (e = n.charAt(64))
for (; t.length % 4; )
t.push(e);
return t.join("")
},
parse: function(t) {
var r = t.length
, n = this._map
, i = n.charAt(64);
i && (i = t.indexOf(i),
-1 != i && (r = i));
for (var i = [], o = 0, a = 0; a < r; a++)
if (a % 4) {
var s = n.indexOf(t.charAt(a - 1)) << 2 * (a % 4)
, c = n.indexOf(t.charAt(a)) >>> 6 - 2 * (a % 4);
i[o >>> 2] |= (s | c) << 24 - 8 * (o % 4),
o++
}
return e.create(i, o)
},
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
}
}(),
function(t) {
function e(t, e, r, n, i, o, a) {
return t = t + (e & r | ~e & n) + i + a,
(t << o | t >>> 32 - o) + e
}
function r(t, e, r, n, i, o, a) {
return t = t + (e & n | r & ~n) + i + a,
(t << o | t >>> 32 - o) + e
}
function n(t, e, r, n, i, o, a) {
return t = t + (e ^ r ^ n) + i + a,
(t << o | t >>> 32 - o) + e
}
function i(t, e, r, n, i, o, a) {
return t = t + (r ^ (e | ~n)) + i + a,
(t << o | t >>> 32 - o) + e
}
for (var o = CryptoJS, a = o.lib, s = a.WordArray, c = a.Hasher, a = o.algo, h = [], u = 0; 64 > u; u++)
h[u] = 4294967296 * t.abs(t.sin(u + 1)) | 0;
a = a.MD5 = c.extend({
_doReset: function() {
this._hash = new s.init([1732584193, 4023233417, 2562383102, 271733878])
},
_doProcessBlock: function(t, o) {
for (var a = 0; 16 > a; a++) {
var s = o + a
, c = t[s];
t[s] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8)
}
var a = this._hash.words
, s = t[o + 0]
, c = t[o + 1]
, u = t[o + 2]
, p = t[o + 3]
, g = t[o + 4]
, f = t[o + 5]
, l = t[o + 6]
, d = t[o + 7]
, m = t[o + 8]
, v = t[o + 9]
, _ = t[o + 10]
, S = t[o + 11]
, b = t[o + 12]
, w = t[o + 13]
, y = t[o + 14]
, E = t[o + 15]
, A = a[0]
, x = a[1]
, T = a[2]
, I = a[3]
, A = e(A, x, T, I, s, 7, h[0])
, I = e(I, A, x, T, c, 12, h[1])
, T = e(T, I, A, x, u, 17, h[2])
, x = e(x, T, I, A, p, 22, h[3])
, A = e(A, x, T, I, g, 7, h[4])
, I = e(I, A, x, T, f, 12, h[5])
, T = e(T, I, A, x, l, 17, h[6])
, x = e(x, T, I, A, d, 22, h[7])
, A = e(A, x, T, I, m, 7, h[8])
, I = e(I, A, x, T, v, 12, h[9])
, T = e(T, I, A, x, _, 17, h[10])
, x = e(x, T, I, A, S, 22, h[11])
, A = e(A, x, T, I, b, 7, h[12])
, I = e(I, A, x, T, w, 12, h[13])
, T = e(T, I, A, x, y, 17, h[14])
, x = e(x, T, I, A, E, 22, h[15])
, A = r(A, x, T, I, c, 5, h[16])
, I = r(I, A, x, T, l, 9, h[17])
, T = r(T, I, A, x, S, 14, h[18])
, x = r(x, T, I, A, s, 20, h[19])
, A = r(A, x, T, I, f, 5, h[20])
, I = r(I, A, x, T, _, 9, h[21])
, T = r(T, I, A, x, E, 14, h[22])
, x = r(x, T, I, A, g, 20, h[23])
, A = r(A, x, T, I, v, 5, h[24])
, I = r(I, A, x, T, y, 9, h[25])
, T = r(T, I, A, x, p, 14, h[26])
, x = r(x, T, I, A, m, 20, h[27])
, A = r(A, x, T, I, w, 5, h[28])
, I = r(I, A, x, T, u, 9, h[29])
, T = r(T, I, A, x, d, 14, h[30])
, x = r(x, T, I, A, b, 20, h[31])
, A = n(A, x, T, I, f, 4, h[32])
, I = n(I, A, x, T, m, 11, h[33])
, T = n(T, I, A, x, S, 16, h[34])
, x = n(x, T, I, A, y, 23, h[35])
, A = n(A, x, T, I, c, 4, h[36])
, I = n(I, A, x, T, g, 11, h[37])
, T = n(T, I, A, x, d, 16, h[38])
, x = n(x, T, I, A, _, 23, h[39])
, A = n(A, x, T, I, w, 4, h[40])
, I = n(I, A, x, T, s, 11, h[41])
, T = n(T, I, A, x, p, 16, h[42])
, x = n(x, T, I, A, l, 23, h[43])
, A = n(A, x, T, I, v, 4, h[44])
, I = n(I, A, x, T, b, 11, h[45])
, T = n(T, I, A, x, E, 16, h[46])
, x = n(x, T, I, A, u, 23, h[47])
, A = i(A, x, T, I, s, 6, h[48])
, I = i(I, A, x, T, d, 10, h[49])
, T = i(T, I, A, x, y, 15, h[50])
, x = i(x, T, I, A, f, 21, h[51])
, A = i(A, x, T, I, b, 6, h[52])
, I = i(I, A, x, T, p, 10, h[53])
, T = i(T, I, A, x, _, 15, h[54])
, x = i(x, T, I, A, c, 21, h[55])
, A = i(A, x, T, I, m, 6, h[56])
, I = i(I, A, x, T, E, 10, h[57])
, T = i(T, I, A, x, l, 15, h[58])
, x = i(x, T, I, A, w, 21, h[59])
, A = i(A, x, T, I, g, 6, h[60])
, I = i(I, A, x, T, S, 10, h[61])
, T = i(T, I, A, x, u, 15, h[62])
, x = i(x, T, I, A, v, 21, h[63]);
a[0] = a[0] + A | 0,
a[1] = a[1] + x | 0,
a[2] = a[2] + T | 0,
a[3] = a[3] + I | 0
},
_doFinalize: function() {
var e = this._data
, r = e.words
, n = 8 * this._nDataBytes
, i = 8 * e.sigBytes;
r[i >>> 5] |= 128 << 24 - i % 32;
var o = t.floor(n / 4294967296);
for (r[(i + 64 >>> 9 << 4) + 15] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8),
r[(i + 64 >>> 9 << 4) + 14] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8),
e.sigBytes = 4 * (r.length + 1),
this._process(),
e = this._hash,
r = e.words,
n = 0; 4 > n; n++)
i = r[n],
r[n] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8);
return e
},
clone: function() {
var t = c.clone.call(this);
return t._hash = this._hash.clone(),
t
}
}),
o.MD5 = c._createHelper(a),
o.HmacMD5 = c._createHmacHelper(a)
}(Math),
function() {
var t = CryptoJS
, e = t.lib
, r = e.Base
, n = e.WordArray
, e = t.algo
, i = e.EvpKDF = r.extend({
cfg: r.extend({
keySize: 4,
hasher: e.MD5,
iterations: 1
}),
init: function(t) {
this.cfg = this.cfg.extend(t)
},
compute: function(t, e) {
for (var r = this.cfg, i = r.hasher.create(), o = n.create(), a = o.words, s = r.keySize, r = r.iterations; a.length < s; ) {
c && i.update(c);
var c = i.update(t).finalize(e);
i.reset();
for (var h = 1; h < r; h++)
c = i.finalize(c),
i.reset();
o.concat(c)
}
return o.sigBytes = 4 * s,
o
}
});
t.EvpKDF = function(t, e, r) {
return i.create(r).compute(t, e)
}
}(),
CryptoJS.lib.Cipher || function(t) {
var e = CryptoJS
, r = e.lib
, n = r.Base
, i = r.WordArray
, o = r.BufferedBlockAlgorithm
, a = e.enc.Base64
, s = e.algo.EvpKDF
, c = r.Cipher = o.extend({
cfg: n.extend(),
createEncryptor: function(t, e) {
return this.create(this._ENC_XFORM_MODE, t, e)
},
createDecryptor: function(t, e) {
return this.create(this._DEC_XFORM_MODE, t, e)
},
init: function(t, e, r) {
this.cfg = this.cfg.extend(r),
this._xformMode = t,
this._key = e,
this.reset()
},
reset: function() {
o.reset.call(this),
this._doReset()
},
process: function(t) {
return this._append(t),
this._process()
},
finalize: function(t) {
return t && this._append(t),
this._doFinalize()
},
keySize: 4,
ivSize: 4,
_ENC_XFORM_MODE: 1,
_DEC_XFORM_MODE: 2,
_createHelper: function(t) {
return {
encrypt: function(e, r, n) {
return ("string" == typeof r ? l : f).encrypt(t, e, r, n)
},
decrypt: function(e, r, n) {
return ("string" == typeof r ? l : f).decrypt(t, e, r, n)
}
}
}
});
r.StreamCipher = c.extend({
_doFinalize: function() {
return this._process(!0)
},
blockSize: 1
});
var h = e.mode = {}
, u = function(e, r, n) {
var i = this._iv;
i ? this._iv = t : i = this._prevBlock;
for (var o = 0; o < n; o++)
e[r + o] ^= i[o]
}
, p = (r.BlockCipherMode = n.extend({
createEncryptor: function(t, e) {
return this.Encryptor.create(t, e)
},
createDecryptor: function(t, e) {
return this.Decryptor.create(t, e)
},
init: function(t, e) {
this._cipher = t,
this._iv = e
}
})).extend();
p.Encryptor = p.extend({
processBlock: function(t, e) {
var r = this._cipher
, n = r.blockSize;
u.call(this, t, e, n),
r.encryptBlock(t, e),
this._prevBlock = t.slice(e, e + n)
}
}),
p.Decryptor = p.extend({
processBlock: function(t, e) {
var r = this._cipher
, n = r.blockSize
, i = t.slice(e, e + n);
r.decryptBlock(t, e),
u.call(this, t, e, n),
this._prevBlock = i
}
}),
h = h.CBC = p,
p = (e.pad = {}).Pkcs7 = {
pad: function(t, e) {
for (var r = 4 * e, r = r - t.sigBytes % r, n = r << 24 | r << 16 | r << 8 | r, o = [], a = 0; a < r; a += 4)
o.push(n);
r = i.create(o, r),
t.concat(r)
},
unpad: function(t) {
t.sigBytes -= 255 & t.words[t.sigBytes - 1 >>> 2]
}
},
r.BlockCipher = c.extend({
cfg: c.cfg.extend({
mode: h,
padding: p
}),
reset: function() {
c.reset.call(this);
var t = this.cfg
, e = t.iv
, t = t.mode;
if (this._xformMode == this._ENC_XFORM_MODE)
var r = t.createEncryptor;
else
r = t.createDecryptor,
this._minBufferSize = 1;
this._mode = r.call(t, this, e && e.words)
},
_doProcessBlock: function(t, e) {
this._mode.processBlock(t, e)
},
_doFinalize: function() {
var t = this.cfg.padding;
if (this._xformMode == this._ENC_XFORM_MODE) {
t.pad(this._data, this.blockSize);
var e = this._process(!0)
} else
e = this._process(!0),
t.unpad(e);
return e
},
blockSize: 4
});
var g = r.CipherParams = n.extend({
init: function(t) {
this.mixIn(t)
},
toString: function(t) {
return (t || this.formatter).stringify(this)
}
})
, h = (e.format = {}).OpenSSL = {
stringify: function(t) {
var e = t.ciphertext;
return t = t.salt,
(t ? i.create([1398893684, 1701076831]).concat(t).concat(e) : e).toString(a)
},
parse: function(t) {
t = a.parse(t);
var e = t.words;
if (1398893684 == e[0] && 1701076831 == e[1]) {
var r = i.create(e.slice(2, 4));
e.splice(0, 4),
t.sigBytes -= 16
}
return g.create({
ciphertext: t,
salt: r
})
}
}
, f = r.SerializableCipher = n.extend({
cfg: n.extend({
format: h
}),
encrypt: function(t, e, r, n) {
n = this.cfg.extend(n);
var i = t.createEncryptor(r, n);
return e = i.finalize(e),
i = i.cfg,
g.create({
ciphertext: e,
key: r,
iv: i.iv,
algorithm: t,
mode: i.mode,
padding: i.padding,
blockSize: t.blockSize,
formatter: n.format
})
},
decrypt: function(t, e, r, n) {
return n = this.cfg.extend(n),
e = this._parse(e, n.format),
t.createDecryptor(r, n).finalize(e.ciphertext)
},
_parse: function(t, e) {
return "string" == typeof t ? e.parse(t, this) : t
}
})
, e = (e.kdf = {}).OpenSSL = {
execute: function(t, e, r, n) {
return n || (n = i.random(8)),
t = s.create({
keySize: e + r
}).compute(t, n),
r = i.create(t.words.slice(e), 4 * r),
t.sigBytes = 4 * e,
g.create({
key: t,
iv: r,
salt: n
})
}
}
, l = r.PasswordBasedCipher = f.extend({
cfg: f.cfg.extend({
kdf: e
}),
encrypt: function(t, e, r, n) {
return n = this.cfg.extend(n),
r = n.kdf.execute(r, t.keySize, t.ivSize),
n.iv = r.iv,
t = f.encrypt.call(this, t, e, r.key, n),
t.mixIn(r),
t
},
decrypt: function(t, e, r, n) {
return n = this.cfg.extend(n),
e = this._parse(e, n.format),
r = n.kdf.execute(r, t.keySize, t.ivSize, e.salt),
n.iv = r.iv,
f.decrypt.call(this, t, e, r.key, n)
}
})
}(),
function() {
for (var t = CryptoJS, e = t.lib.BlockCipher, r = t.algo, n = [], i = [], o = [], a = [], s = [], c = [], h = [], u = [], p = [], g = [], f = [], l = 0; 256 > l; l++)
f[l] = 128 > l ? l << 1 : l << 1 ^ 283;
for (var d = 0, m = 0, l = 0; 256 > l; l++) {
var v = m ^ m << 1 ^ m << 2 ^ m << 3 ^ m << 4
, v = v >>> 8 ^ 255 & v ^ 99;
n[d] = v,
i[v] = d;
var _ = f[d]
, S = f[_]
, b = f[S]
, w = 257 * f[v] ^ 16843008 * v;
o[d] = w << 24 | w >>> 8,
a[d] = w << 16 | w >>> 16,
s[d] = w << 8 | w >>> 24,
c[d] = w,
w = 16843009 * b ^ 65537 * S ^ 257 * _ ^ 16843008 * d,
h[v] = w << 24 | w >>> 8,
u[v] = w << 16 | w >>> 16,
p[v] = w << 8 | w >>> 24,
g[v] = w,
d ? (d = _ ^ f[f[f[b ^ _]]],
m ^= f[f[m]]) : d = m = 1
}
var y = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]
, r = r.AES = e.extend({
_doReset: function() {
for (var t = this._key, e = t.words, r = t.sigBytes / 4, t = 4 * ((this._nRounds = r + 6) + 1), i = this._keySchedule = [], o = 0; o < t; o++)
if (o < r)
i[o] = e[o];
else {
var a = i[o - 1];
o % r ? 6 < r && 4 == o % r && (a = n[a >>> 24] << 24 | n[a >>> 16 & 255] << 16 | n[a >>> 8 & 255] << 8 | n[255 & a]) : (a = a << 8 | a >>> 24,
a = n[a >>> 24] << 24 | n[a >>> 16 & 255] << 16 | n[a >>> 8 & 255] << 8 | n[255 & a],
a ^= y[o / r | 0] << 24),
i[o] = i[o - r] ^ a
}
for (e = this._invKeySchedule = [],
r = 0; r < t; r++)
o = t - r,
a = r % 4 ? i[o] : i[o - 4],
e[r] = 4 > r || 4 >= o ? a : h[n[a >>> 24]] ^ u[n[a >>> 16 & 255]] ^ p[n[a >>> 8 & 255]] ^ g[n[255 & a]]
},
encryptBlock: function(t, e) {
this._doCryptBlock(t, e, this._keySchedule, o, a, s, c, n)
},
decryptBlock: function(t, e) {
var r = t[e + 1];
t[e + 1] = t[e + 3],
t[e + 3] = r,
this._doCryptBlock(t, e, this._invKeySchedule, h, u, p, g, i),
r = t[e + 1],
t[e + 1] = t[e + 3],
t[e + 3] = r
},
_doCryptBlock: function(t, e, r, n, i, o, a, s) {
for (var c = this._nRounds, h = t[e] ^ r[0], u = t[e + 1] ^ r[1], p = t[e + 2] ^ r[2], g = t[e + 3] ^ r[3], f = 4, l = 1; l < c; l++)
var d = n[h >>> 24] ^ i[u >>> 16 & 255] ^ o[p >>> 8 & 255] ^ a[255 & g] ^ r[f++]
, m = n[u >>> 24] ^ i[p >>> 16 & 255] ^ o[g >>> 8 & 255] ^ a[255 & h] ^ r[f++]
, v = n[p >>> 24] ^ i[g >>> 16 & 255] ^ o[h >>> 8 & 255] ^ a[255 & u] ^ r[f++]
, g = n[g >>> 24] ^ i[h >>> 16 & 255] ^ o[u >>> 8 & 255] ^ a[255 & p] ^ r[f++]
, h = d
, u = m
, p = v;
d = (s[h >>> 24] << 24 | s[u >>> 16 & 255] << 16 | s[p >>> 8 & 255] << 8 | s[255 & g]) ^ r[f++],
m = (s[u >>> 24] << 24 | s[p >>> 16 & 255] << 16 | s[g >>> 8 & 255] << 8 | s[255 & h]) ^ r[f++],
v = (s[p >>> 24] << 24 | s[g >>> 16 & 255] << 16 | s[h >>> 8 & 255] << 8 | s[255 & u]) ^ r[f++],
g = (s[g >>> 24] << 24 | s[h >>> 16 & 255] << 16 | s[u >>> 8 & 255] << 8 | s[255 & p]) ^ r[f++],
t[e] = d,
t[e + 1] = m,
t[e + 2] = v,
t[e + 3] = g
},
keySize: 8
});
t.AES = e._createHelper(r)
}(),
CryptoJS.mode.ECB = function() {
var t = CryptoJS.lib.BlockCipherMode.extend();
return t.Encryptor = t.extend({
processBlock: function(t, e) {
this._cipher.encryptBlock(t, e)
}
}),
t.Decryptor = t.extend({
processBlock: function(t, e) {
this._cipher.decryptBlock(t, e)
}
}),
t
}()
function v() {
for (var t = "", e = "0123456789abcdef", r = 0; r < 16; r++)
t += e.charAt(Math.floor(16 * Math.random()));
return t
}
function pwd(password) {
var e = new RSAKey;
var t = "BE24E372DC1B329633A6A014A7C02797915E3C363DD6EE119377BD645329B7E6446B4A71AC5F878EBC870C6D8BFD3C06B92E6C6E93390B34192A7A9E430800091761473FAC2CC0A68A828B2589A8CB729C19161E8E27F4C0F3CDE9701FAFE48D2B65947799072AFA6A3F2D7BDBEF8B6D7429C2D115A3E5F723467D57B3AC6967"
var i = "10001"
e.setPublic(t,i)
var a = e.encrypt(password);
return a
}