[JavaScript] 纯文本查看 复制代码function t(e, i, t) {
this.e = m(e),
this.d = m(i),
this.m = m(t),
this.chunkSize = 2 * N(this.m),
this.radix = 16,
this.barrett = new o(this.m)
}
function n(e, i) {
for (var t = new Array, n = i.length, o = 0; n > o;)
t[o] = i.charCodeAt(o),
o++;
for (; t.length % e.chunkSize != 0;)
t[o++] = 0;
var s, r, a, l = t.length,
c = "";
for (o = 0; l > o; o += e.chunkSize) {
for (a = new d,
s = 0,
r = o; r < o + e.chunkSize; ++s)
a.digits[s] = t[r++],
a.digits[s] += t[r++] << 8;
var u = e.barrett.powMod(a, e.e),
g = 16 == e.radix ? h(u) : f(u, e.radix);
c += g + " "
}
return c.substring(0, c.length - 1)
}
function o(e) {
this.modulus = c(e),
this.k = N(this.modulus) + 1;
var i = new d;
i.digits[2 * this.k] = 1,
this.mu = _(i, this.modulus),
this.bkplus1 = new d,
this.bkplus1.digits[this.k + 1] = 1,
this.modulo = s,
this.multiplyMod = r,
this.powMod = a
}
function s(e) {
var i = X(e, this.k - 1),
t = C(i, this.mu),
n = X(t, this.k + 1),
o = L(e, this.k + 1),
s = C(n, this.modulus),
r = L(s, this.k + 1),
a = b(o, r);
a.isNeg && (a = w(a, this.bkplus1));
for (var l = D(a, this.modulus) >= 0; l;)
a = b(a, this.modulus),
l = D(a, this.modulus) >= 0;
return a
}
function r(e, i) {
var t = C(e, i);
return this.modulo(t)
}
function a(e, i) {
var t = new d;
t.digits[0] = 1;
for (var n = e, o = i;;) {
if (0 != (1 & o.digits[0]) && (t = this.multiplyMod(t, n)),
o = M(o, 1),
0 == o.digits[0] && 0 == N(o)) break;
n = this.multiplyMod(n, n)
}
return t
}
function l(e) {
B = e,
z = new Array(B);
for (var i = 0; i < z.length; i++)
z[i] = 0;
O = new d,
I = new d,
I.digits[0] = 1
}
function d(e) {
"boolean" == typeof e && 1 == e ? this.digits = null : this.digits = z.slice(0),
this.isNeg = !1
}
function c(e) {
var i = new d(!0);
return i.digits = e.digits.slice(0),
i.isNeg = e.isNeg,
i
}
function u(e) {
var i = new d;
i.isNeg = 0 > e,
e = Math.abs(e);
for (var t = 0; e > 0;)
i.digits[t++] = e & H,
e >>= P;
return i
}
function g(e) {
for (var i = "", t = e.length - 1; t > -1; --t)
i += e.charAt(t);
return i
}
function f(e, i) {
var t = new d;
t.digits[0] = i;
for (var n = A(e, t), o = Q[n[1].digits[0]]; 1 == D(n[0], O);)
n = A(n[0], t),
digit = n[1].digits[0],
o += Q[n[1].digits[0]];
return (e.isNeg ? "-" : "") + g(o)
}
function p(e) {
var t = 15,
n = "";
for (i = 0; i < 4; ++i)
n += Z[e & t],
e >>>= 4;
return g(n)
}
function h(e) {
for (var i = "", t = (N(e),
N(e)); t > -1; --t)
i += p(e.digits[t]);
return i
}
function v(e) {
var i, t = 48,
n = t + 9,
o = 97,
s = o + 25,
r = 65,
a = 90;
return i = e >= t && n >= e ? e - t : e >= r && a >= e ? 10 + e - r : e >= o && s >= e ? 10 + e - o : 0
}
function y(e) {
for (var i = 0, t = Math.min(e.length, 4), n = 0; t > n; ++n)
i <<= 4,
i |= v(e.charCodeAt(n));
return i
}
function m(e) {
for (var i = new d, t = e.length, n = t, o = 0; n > 0; n -= 4, ++o)
i.digits[o] = y(e.substr(Math.max(n - 4, 0), Math.min(n, 4)));
return i
}
function w(e, i) {
var t;
if (e.isNeg != i.isNeg) i.isNeg = !i.isNeg,
t = b(e, i),
i.isNeg = !i.isNeg;
else {
t = new d;
for (var n, o = 0, s = 0; s < e.digits.length; ++s)
n = e.digits[s] + i.digits[s] + o,
t.digits[s] = 65535 & n,
o = Number(n >= R);
t.isNeg = e.isNeg
}
return t
}
function b(e, i) {
var t;
if (e.isNeg != i.isNeg) i.isNeg = !i.isNeg,
t = w(e, i),
i.isNeg = !i.isNeg;
else {
t = new d;
var n, o;
o = 0;
for (var s = 0; s < e.digits.length; ++s)
n = e.digits[s] - i.digits[s] + o,
t.digits[s] = 65535 & n,
t.digits[s] < 0 && (t.digits[s] += R),
o = 0 - Number(0 > n);
if (-1 == o) {
o = 0;
for (var s = 0; s < e.digits.length; ++s)
n = 0 - t.digits[s] + o,
t.digits[s] = 65535 & n,
t.digits[s] < 0 && (t.digits[s] += R),
o = 0 - Number(0 > n);
t.isNeg = !e.isNeg
} else t.isNeg = e.isNeg
}
return t
}
function N(e) {
for (var i = e.digits.length - 1; i > 0 && 0 == e.digits[i];)--i;
return i
}
function k(e) {
var i, t = N(e),
n = e.digits[t],
o = (t + 1) * q;
for (i = o; i > o - q && 0 == (32768 & n); --i)
n <<= 1;
return i
}
function C(e, i) {
for (var t, n, o, s = new d, r = N(e), a = N(i), l = 0; a >= l; ++l) {
for (t = 0,
o = l,
j = 0; j <= r; ++j, ++o)
n = s.digits[o] + e.digits[j] * i.digits[l] + t,
s.digits[o] = n & H,
t = n >>> P;
s.digits[l + r + 1] = t
}
return s.isNeg = e.isNeg != i.isNeg,
s
}
function x(e, i) {
var t, n, o;
result = new d,
t = N(e),
n = 0;
for (var s = 0; t >= s; ++s)
o = result.digits[s] + e.digits[s] * i + n,
result.digits[s] = o & H,
n = o >>> P;
return result.digits[1 + t] = n,
result
}
function $(e, i, t, n, o) {
for (var s = Math.min(i + o, e.length), r = i, a = n; s > r; ++r, ++a)
t[a] = e[r]
}
function F(e, i) {
var t = Math.floor(i / q),
n = new d;
$(e.digits, 0, n.digits, t, n.digits.length - t);
for (var o = i % q, s = q - o, r = n.digits.length - 1, a = r - 1; r > 0; --r, --a)
n.digits[r] = n.digits[r] << o & H | (n.digits[a] & J[o]) >>> s;
return n.digits[0] = n.digits[r] << o & H,
n.isNeg = e.isNeg,
n
}
function M(e, i) {
var t = Math.floor(i / q),
n = new d;
$(e.digits, t, n.digits, 0, e.digits.length - t);
for (var o = i % q, s = q - o, r = 0, a = r + 1; r < n.digits.length - 1; ++r, ++a)
n.digits[r] = n.digits[r] >>> o | (n.digits[a] & W[o]) << s;
return n.digits[n.digits.length - 1] >>>= o,
n.isNeg = e.isNeg,
n
}
function E(e, i) {
var t = new d;
return $(e.digits, 0, t.digits, i, t.digits.length - i),
t
}
function X(e, i) {
var t = new d;
return $(e.digits, i, t.digits, 0, t.digits.length - i),
t
}
function L(e, i) {
var t = new d;
return $(e.digits, 0, t.digits, 0, i),
t
}
function D(e, i) {
if (e.isNeg != i.isNeg) return 1 - 2 * Number(e.isNeg);
for (var t = e.digits.length - 1; t >= 0; --t)
if (e.digits[t] != i.digits[t]) return e.isNeg ? 1 - 2 * Number(e.digits[t] > i.digits[t]) : 1 - 2 * Number(e.digits[t] < i.digits[t]);
return 0
}
function A(e, i) {
var t, n, o = k(e),
s = k(i),
r = i.isNeg;
if (s > o) return e.isNeg ? (t = c(I),
t.isNeg = !i.isNeg,
e.isNeg = !1,
i.isNeg = !1,
n = b(i, e),
e.isNeg = !0,
i.isNeg = r) : (t = new d,
n = c(e)),
new Array(t, n);
t = new d,
n = e;
for (var a = Math.ceil(s / q) - 1, l = 0; i.digits[a] < U;)
i = F(i, 1), ++l, ++s,
a = Math.ceil(s / q) - 1;
n = F(n, l),
o += l;
for (var u = Math.ceil(o / q) - 1, g = E(i, u - a); - 1 != D(n, g);)++t.digits[u - a],
n = b(n, g);
for (var f = u; f > a; --f) {
var p = f >= n.digits.length ? 0 : n.digits[f],
h = f - 1 >= n.digits.length ? 0 : n.digits[f - 1],
v = f - 2 >= n.digits.length ? 0 : n.digits[f - 2],
y = a >= i.digits.length ? 0 : i.digits[a],
m = a - 1 >= i.digits.length ? 0 : i.digits[a - 1];
p == y ? t.digits[f - a - 1] = H : t.digits[f - a - 1] = Math.floor((p * R + h) / y);
for (var C = t.digits[f - a - 1] * (y * R + m), $ = p * K + (h * R + v); C > $;)--t.digits[f - a - 1],
C = t.digits[f - a - 1] * (y * R | m),
$ = p * R * R + (h * R + v);
g = E(i, f - a - 1),
n = b(n, x(g, t.digits[f - a - 1])),
n.isNeg && (n = w(n, g), --t.digits[f - a - 1])
}
return n = M(n, l),
t.isNeg = e.isNeg != r,
e.isNeg && (t = r ? w(t, I) : b(t, I),
i = M(i, l),
n = b(i, n)),
0 == n.digits[0] && 0 == N(n) && (n.isNeg = !1),
new Array(t, n)
}
function _(e, i) {
return A(e, i)[0]
}
var B, z, O, I, P = 16,
q = P,
R = 65536,
U = R >>> 1,
K = R * R,
H = R - 1;
l(20);
var Q = (u(1e15),
new Array("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")),
Z = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"),
J = new Array(0, 32768, 49152, 57344, 61440, 63488, 64512, 65024, 65280, 65408, 65472, 65504, 65520, 65528, 65532, 65534, 65535),
W = new Array(0, 1, 3, 7, 15, 31, 63, 127, 255, 511, 1023, 2047, 4095, 8191, 16383, 32767, 65535)
function getpwd(pwd,none){
T = new t("10001","null",none)
encrypted = n(T, pwd)
return encrypted
}