mirror of
https://github.com/luzhisheng/js_reverse.git
synced 2025-04-23 05:39:22 +08:00
766 lines
26 KiB
JavaScript
766 lines
26 KiB
JavaScript
var CryptoJS = function (o, e) {
|
|
var h = {}
|
|
, g = h.lib = {}
|
|
, z = function () {
|
|
}
|
|
, y = g.Base = {
|
|
extend: function (b) {
|
|
z.prototype = this;
|
|
var d = new z;
|
|
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)
|
|
}
|
|
}
|
|
, a = g.WordArray = y.extend({
|
|
init: function (b, d) {
|
|
b = this.words = b || [];
|
|
this.sigBytes = d != e ? d : 4 * b.length
|
|
},
|
|
toString: function (b) {
|
|
return (b || m).stringify(this)
|
|
},
|
|
concat: function (b) {
|
|
var p = this.words
|
|
, n = b.words
|
|
, l = this.sigBytes;
|
|
b = b.sigBytes;
|
|
this.clamp();
|
|
if (l % 4) {
|
|
for (var d = 0; d < b; d++) {
|
|
p[l + d >>> 2] |= (n[d >>> 2] >>> 24 - 8 * (d % 4) & 255) << 24 - 8 * ((l + d) % 4)
|
|
}
|
|
} else {
|
|
if (65535 < n.length) {
|
|
for (d = 0; d < b; d += 4) {
|
|
p[l + d >>> 2] = n[d >>> 2]
|
|
}
|
|
} else {
|
|
p.push.apply(p, n)
|
|
}
|
|
}
|
|
this.sigBytes += b;
|
|
return this
|
|
},
|
|
clamp: function () {
|
|
var b = this.words
|
|
, d = this.sigBytes;
|
|
b[d >>> 2] &= 4294967295 << 32 - 8 * (d % 4);
|
|
b.length = o.ceil(d / 4)
|
|
},
|
|
clone: function () {
|
|
var b = y.clone.call(this);
|
|
b.words = this.words.slice(0);
|
|
return b
|
|
},
|
|
random: function (b) {
|
|
for (var l = [], d = 0; d < b; d += 4) {
|
|
l.push(4294967296 * o.random() | 0)
|
|
}
|
|
return new a.init(l, b)
|
|
}
|
|
})
|
|
, k = h.enc = {}
|
|
, m = k.Hex = {
|
|
stringify: function (b) {
|
|
var p = b.words;
|
|
b = b.sigBytes;
|
|
for (var n = [], l = 0; l < b; l++) {
|
|
var d = p[l >>> 2] >>> 24 - 8 * (l % 4) & 255;
|
|
n.push((d >>> 4).toString(16));
|
|
n.push((d & 15).toString(16))
|
|
}
|
|
return n.join("")
|
|
},
|
|
parse: function (b) {
|
|
for (var n = b.length, l = [], d = 0; d < n; d += 2) {
|
|
l[d >>> 3] |= parseInt(b.substr(d, 2), 16) << 24 - 4 * (d % 8)
|
|
}
|
|
return new a.init(l, n / 2)
|
|
}
|
|
}
|
|
, i = k.Latin1 = {
|
|
stringify: function (b) {
|
|
var n = b.words;
|
|
b = b.sigBytes;
|
|
for (var l = [], d = 0; d < b; d++) {
|
|
l.push(String.fromCharCode(n[d >>> 2] >>> 24 - 8 * (d % 4) & 255))
|
|
}
|
|
return l.join("")
|
|
},
|
|
parse: function (b) {
|
|
for (var n = b.length, l = [], d = 0; d < n; d++) {
|
|
l[d >>> 2] |= (b.charCodeAt(d) & 255) << 24 - 8 * (d % 4)
|
|
}
|
|
return new a.init(l, n)
|
|
}
|
|
}
|
|
, j = k.Utf8 = {
|
|
stringify: function (b) {
|
|
try {
|
|
return decodeURIComponent(escape(i.stringify(b)))
|
|
} catch (d) {
|
|
throw Error("Malformed UTF-8 data")
|
|
}
|
|
},
|
|
parse: function (b) {
|
|
return i.parse(unescape(encodeURIComponent(b)))
|
|
}
|
|
}
|
|
, c = g.BufferedBlockAlgorithm = y.extend({
|
|
reset: function () {
|
|
this._data = new a.init;
|
|
this._nDataBytes = 0
|
|
},
|
|
_append: function (b) {
|
|
"string" == typeof b && (b = j.parse(b));
|
|
this._data.concat(b);
|
|
this._nDataBytes += b.sigBytes
|
|
},
|
|
_process: function (l) {
|
|
var t = this._data
|
|
, s = t.words
|
|
, p = t.sigBytes
|
|
, n = this.blockSize
|
|
, d = p / (4 * n)
|
|
, d = l ? o.ceil(d) : o.max((d | 0) - this._minBufferSize, 0);
|
|
l = d * n;
|
|
p = o.min(4 * l, p);
|
|
if (l) {
|
|
for (var r = 0; r < l; r += n) {
|
|
this._doProcessBlock(s, r)
|
|
}
|
|
r = s.splice(0, l);
|
|
t.sigBytes -= p
|
|
}
|
|
return new a.init(r, p)
|
|
},
|
|
clone: function () {
|
|
var b = y.clone.call(this);
|
|
b._data = this._data.clone();
|
|
return b
|
|
},
|
|
_minBufferSize: 0
|
|
});
|
|
g.Hasher = c.extend({
|
|
cfg: y.extend(),
|
|
init: function (b) {
|
|
this.cfg = this.cfg.extend(b);
|
|
this.reset()
|
|
},
|
|
reset: function () {
|
|
c.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 (d, l) {
|
|
return (new b.init(l)).finalize(d)
|
|
}
|
|
},
|
|
_createHmacHelper: function (b) {
|
|
return function (d, l) {
|
|
return (new f.HMAC.init(b, l)).finalize(d)
|
|
}
|
|
}
|
|
});
|
|
var f = h.algo = {};
|
|
return h
|
|
}(Math);
|
|
(function () {
|
|
var a = CryptoJS
|
|
, b = a.lib.WordArray;
|
|
a.enc.Base64 = {
|
|
stringify: function (j) {
|
|
var e = j.words
|
|
, i = j.sigBytes
|
|
, g = this._map;
|
|
j.clamp();
|
|
j = [];
|
|
for (var h = 0; h < i; h += 3) {
|
|
for (var c = (e[h >>> 2] >>> 24 - 8 * (h % 4) & 255) << 16 | (e[h + 1 >>> 2] >>> 24 - 8 * ((h + 1) % 4) & 255) << 8 | e[h + 2 >>> 2] >>> 24 - 8 * ((h + 2) % 4) & 255, f = 0; 4 > f && h + 0.75 * f < i; f++) {
|
|
j.push(g.charAt(c >>> 6 * (3 - f) & 63))
|
|
}
|
|
}
|
|
if (e = g.charAt(64)) {
|
|
for (; j.length % 4;) {
|
|
j.push(e)
|
|
}
|
|
}
|
|
return j.join("")
|
|
},
|
|
parse: function (k) {
|
|
var f = k.length
|
|
, i = this._map
|
|
, h = i.charAt(64);
|
|
h && (h = k.indexOf(h),
|
|
-1 != h && (f = h));
|
|
for (var h = [], j = 0, e = 0; e < f; e++) {
|
|
if (e % 4) {
|
|
var g = i.indexOf(k.charAt(e - 1)) << 2 * (e % 4)
|
|
, c = i.indexOf(k.charAt(e)) >>> 6 - 2 * (e % 4);
|
|
h[j >>> 2] |= (g | c) << 24 - 8 * (j % 4);
|
|
j++
|
|
}
|
|
}
|
|
return b.create(h, j)
|
|
},
|
|
_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
|
|
}
|
|
}
|
|
)();
|
|
(function (k) {
|
|
function c(d, s, l, r, q, p, o) {
|
|
d = d + (s & l | ~s & r) + q + o;
|
|
return (d << p | d >>> 32 - p) + s
|
|
}
|
|
|
|
function f(d, s, l, r, q, p, o) {
|
|
d = d + (s & r | l & ~r) + q + o;
|
|
return (d << p | d >>> 32 - p) + s
|
|
}
|
|
|
|
function e(d, s, l, r, q, p, o) {
|
|
d = d + (s ^ l ^ r) + q + o;
|
|
return (d << p | d >>> 32 - p) + s
|
|
}
|
|
|
|
function n(d, s, l, r, q, p, o) {
|
|
d = d + (l ^ (s | ~r)) + q + o;
|
|
return (d << p | d >>> 32 - p) + s
|
|
}
|
|
|
|
for (var m = CryptoJS, a = m.lib, i = a.WordArray, j = a.Hasher, a = m.algo, g = [], h = 0; 64 > h; h++) {
|
|
g[h] = 4294967296 * k.abs(k.sin(h + 1)) | 0
|
|
}
|
|
a = a.MD5 = j.extend({
|
|
_doReset: function () {
|
|
this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878])
|
|
},
|
|
_doProcessBlock: function (J, L) {
|
|
for (var U = 0; 16 > U; U++) {
|
|
var T = L + U
|
|
, S = J[T];
|
|
J[T] = (S << 8 | S >>> 24) & 16711935 | (S << 24 | S >>> 8) & 4278255360
|
|
}
|
|
var U = this._hash.words
|
|
, T = J[L + 0]
|
|
, S = J[L + 1]
|
|
, O = J[L + 2]
|
|
, N = J[L + 3]
|
|
, b = J[L + 4]
|
|
, H = J[L + 5]
|
|
, y = J[L + 6]
|
|
, l = J[L + 7]
|
|
, o = J[L + 8]
|
|
, K = J[L + 9]
|
|
, I = J[L + 10]
|
|
, G = J[L + 11]
|
|
, p = J[L + 12]
|
|
, F = J[L + 13]
|
|
, s = J[L + 14]
|
|
, d = J[L + 15]
|
|
, R = U[0]
|
|
, M = U[1]
|
|
, Q = U[2]
|
|
, P = U[3]
|
|
, R = c(R, M, Q, P, T, 7, g[0])
|
|
, P = c(P, R, M, Q, S, 12, g[1])
|
|
, Q = c(Q, P, R, M, O, 17, g[2])
|
|
, M = c(M, Q, P, R, N, 22, g[3])
|
|
, R = c(R, M, Q, P, b, 7, g[4])
|
|
, P = c(P, R, M, Q, H, 12, g[5])
|
|
, Q = c(Q, P, R, M, y, 17, g[6])
|
|
, M = c(M, Q, P, R, l, 22, g[7])
|
|
, R = c(R, M, Q, P, o, 7, g[8])
|
|
, P = c(P, R, M, Q, K, 12, g[9])
|
|
, Q = c(Q, P, R, M, I, 17, g[10])
|
|
, M = c(M, Q, P, R, G, 22, g[11])
|
|
, R = c(R, M, Q, P, p, 7, g[12])
|
|
, P = c(P, R, M, Q, F, 12, g[13])
|
|
, Q = c(Q, P, R, M, s, 17, g[14])
|
|
, M = c(M, Q, P, R, d, 22, g[15])
|
|
, R = f(R, M, Q, P, S, 5, g[16])
|
|
, P = f(P, R, M, Q, y, 9, g[17])
|
|
, Q = f(Q, P, R, M, G, 14, g[18])
|
|
, M = f(M, Q, P, R, T, 20, g[19])
|
|
, R = f(R, M, Q, P, H, 5, g[20])
|
|
, P = f(P, R, M, Q, I, 9, g[21])
|
|
, Q = f(Q, P, R, M, d, 14, g[22])
|
|
, M = f(M, Q, P, R, b, 20, g[23])
|
|
, R = f(R, M, Q, P, K, 5, g[24])
|
|
, P = f(P, R, M, Q, s, 9, g[25])
|
|
, Q = f(Q, P, R, M, N, 14, g[26])
|
|
, M = f(M, Q, P, R, o, 20, g[27])
|
|
, R = f(R, M, Q, P, F, 5, g[28])
|
|
, P = f(P, R, M, Q, O, 9, g[29])
|
|
, Q = f(Q, P, R, M, l, 14, g[30])
|
|
, M = f(M, Q, P, R, p, 20, g[31])
|
|
, R = e(R, M, Q, P, H, 4, g[32])
|
|
, P = e(P, R, M, Q, o, 11, g[33])
|
|
, Q = e(Q, P, R, M, G, 16, g[34])
|
|
, M = e(M, Q, P, R, s, 23, g[35])
|
|
, R = e(R, M, Q, P, S, 4, g[36])
|
|
, P = e(P, R, M, Q, b, 11, g[37])
|
|
, Q = e(Q, P, R, M, l, 16, g[38])
|
|
, M = e(M, Q, P, R, I, 23, g[39])
|
|
, R = e(R, M, Q, P, F, 4, g[40])
|
|
, P = e(P, R, M, Q, T, 11, g[41])
|
|
, Q = e(Q, P, R, M, N, 16, g[42])
|
|
, M = e(M, Q, P, R, y, 23, g[43])
|
|
, R = e(R, M, Q, P, K, 4, g[44])
|
|
, P = e(P, R, M, Q, p, 11, g[45])
|
|
, Q = e(Q, P, R, M, d, 16, g[46])
|
|
, M = e(M, Q, P, R, O, 23, g[47])
|
|
, R = n(R, M, Q, P, T, 6, g[48])
|
|
, P = n(P, R, M, Q, l, 10, g[49])
|
|
, Q = n(Q, P, R, M, s, 15, g[50])
|
|
, M = n(M, Q, P, R, H, 21, g[51])
|
|
, R = n(R, M, Q, P, p, 6, g[52])
|
|
, P = n(P, R, M, Q, N, 10, g[53])
|
|
, Q = n(Q, P, R, M, I, 15, g[54])
|
|
, M = n(M, Q, P, R, S, 21, g[55])
|
|
, R = n(R, M, Q, P, o, 6, g[56])
|
|
, P = n(P, R, M, Q, d, 10, g[57])
|
|
, Q = n(Q, P, R, M, y, 15, g[58])
|
|
, M = n(M, Q, P, R, F, 21, g[59])
|
|
, R = n(R, M, Q, P, b, 6, g[60])
|
|
, P = n(P, R, M, Q, G, 10, g[61])
|
|
, Q = n(Q, P, R, M, O, 15, g[62])
|
|
, M = n(M, Q, P, R, K, 21, g[63]);
|
|
U[0] = U[0] + R | 0;
|
|
U[1] = U[1] + M | 0;
|
|
U[2] = U[2] + Q | 0;
|
|
U[3] = U[3] + P | 0
|
|
},
|
|
_doFinalize: function () {
|
|
var d = this._data
|
|
, q = d.words
|
|
, l = 8 * this._nDataBytes
|
|
, p = 8 * d.sigBytes;
|
|
q[p >>> 5] |= 128 << 24 - p % 32;
|
|
var o = k.floor(l / 4294967296);
|
|
q[(p + 64 >>> 9 << 4) + 15] = (o << 8 | o >>> 24) & 16711935 | (o << 24 | o >>> 8) & 4278255360;
|
|
q[(p + 64 >>> 9 << 4) + 14] = (l << 8 | l >>> 24) & 16711935 | (l << 24 | l >>> 8) & 4278255360;
|
|
d.sigBytes = 4 * (q.length + 1);
|
|
this._process();
|
|
d = this._hash;
|
|
q = d.words;
|
|
for (l = 0; 4 > l; l++) {
|
|
p = q[l],
|
|
q[l] = (p << 8 | p >>> 24) & 16711935 | (p << 24 | p >>> 8) & 4278255360
|
|
}
|
|
return d
|
|
},
|
|
clone: function () {
|
|
var d = j.clone.call(this);
|
|
d._hash = this._hash.clone();
|
|
return d
|
|
}
|
|
});
|
|
m.MD5 = j._createHelper(a);
|
|
m.HmacMD5 = j._createHmacHelper(a)
|
|
}
|
|
)(Math);
|
|
(function () {
|
|
var b = CryptoJS
|
|
, e = b.lib
|
|
, f = e.Base
|
|
, a = e.WordArray
|
|
, e = b.algo
|
|
, c = e.EvpKDF = f.extend({
|
|
cfg: f.extend({
|
|
keySize: 4,
|
|
hasher: e.MD5,
|
|
iterations: 1
|
|
}),
|
|
init: function (g) {
|
|
this.cfg = this.cfg.extend(g)
|
|
},
|
|
compute: function (k, g) {
|
|
for (var i = this.cfg, t = i.hasher.create(), l = a.create(), o = l.words, h = i.keySize, i = i.iterations; o.length < h;) {
|
|
j && t.update(j);
|
|
var j = t.update(k).finalize(g);
|
|
t.reset();
|
|
for (var m = 1; m < i; m++) {
|
|
j = t.finalize(j),
|
|
t.reset()
|
|
}
|
|
l.concat(j)
|
|
}
|
|
l.sigBytes = 4 * h;
|
|
return l
|
|
}
|
|
});
|
|
b.EvpKDF = function (i, g, h) {
|
|
return c.create(h).compute(i, g)
|
|
}
|
|
}
|
|
)();
|
|
CryptoJS.lib.Cipher || function (B) {
|
|
var g = CryptoJS
|
|
, j = g.lib
|
|
, i = j.Base
|
|
, D = j.WordArray
|
|
, C = j.BufferedBlockAlgorithm
|
|
, e = g.enc.Base64
|
|
, z = g.algo.EvpKDF
|
|
, A = j.Cipher = C.extend({
|
|
cfg: i.extend(),
|
|
createEncryptor: function (c, b) {
|
|
return this.create(this._ENC_XFORM_MODE, c, b)
|
|
},
|
|
createDecryptor: function (c, b) {
|
|
return this.create(this._DEC_XFORM_MODE, c, b)
|
|
},
|
|
init: function (l, d, c) {
|
|
this.cfg = this.cfg.extend(c);
|
|
this._xformMode = l;
|
|
this._key = d;
|
|
this.reset()
|
|
},
|
|
reset: function () {
|
|
C.reset.call(this);
|
|
this._doReset()
|
|
},
|
|
process: function (a) {
|
|
this._append(a);
|
|
return this._process()
|
|
},
|
|
finalize: function (a) {
|
|
a && this._append(a);
|
|
return this._doFinalize()
|
|
},
|
|
keySize: 4,
|
|
ivSize: 4,
|
|
_ENC_XFORM_MODE: 1,
|
|
_DEC_XFORM_MODE: 2,
|
|
_createHelper: function (a) {
|
|
return {
|
|
encrypt: function (c, l, n) {
|
|
return ("string" == typeof l ? k : o).encrypt(a, c, l, n)
|
|
},
|
|
decrypt: function (c, l, n) {
|
|
return ("string" == typeof l ? k : o).decrypt(a, c, l, n)
|
|
}
|
|
}
|
|
}
|
|
});
|
|
j.StreamCipher = A.extend({
|
|
_doFinalize: function () {
|
|
return this._process(!0)
|
|
},
|
|
blockSize: 1
|
|
});
|
|
var m = g.mode = {}
|
|
, y = function (p, n, l) {
|
|
var r = this._iv;
|
|
r ? this._iv = B : r = this._prevBlock;
|
|
for (var q = 0; q < l; q++) {
|
|
p[n + q] ^= r[q]
|
|
}
|
|
}
|
|
, f = (j.BlockCipherMode = i.extend({
|
|
createEncryptor: function (c, b) {
|
|
return this.Encryptor.create(c, b)
|
|
},
|
|
createDecryptor: function (c, b) {
|
|
return this.Decryptor.create(c, b)
|
|
},
|
|
init: function (c, b) {
|
|
this._cipher = c;
|
|
this._iv = b
|
|
}
|
|
})).extend();
|
|
f.Encryptor = f.extend({
|
|
processBlock: function (n, l) {
|
|
var d = this._cipher
|
|
, p = d.blockSize;
|
|
y.call(this, n, l, p);
|
|
d.encryptBlock(n, l);
|
|
this._prevBlock = n.slice(l, l + p)
|
|
}
|
|
});
|
|
f.Decryptor = f.extend({
|
|
processBlock: function (p, n) {
|
|
var l = this._cipher
|
|
, r = l.blockSize
|
|
, q = p.slice(n, n + r);
|
|
l.decryptBlock(p, n);
|
|
y.call(this, p, n, r);
|
|
this._prevBlock = q
|
|
}
|
|
});
|
|
m = m.CBC = f;
|
|
f = (g.pad = {}).Pkcs7 = {
|
|
pad: function (r, p) {
|
|
for (var u = 4 * p, u = u - r.sigBytes % u, s = u << 24 | u << 16 | u << 8 | u, q = [], t = 0; t < u; t += 4) {
|
|
q.push(s)
|
|
}
|
|
u = D.create(q, u);
|
|
r.concat(u)
|
|
},
|
|
unpad: function (b) {
|
|
b.sigBytes -= b.words[b.sigBytes - 1 >>> 2] & 255
|
|
}
|
|
};
|
|
j.BlockCipher = A.extend({
|
|
cfg: A.cfg.extend({
|
|
mode: m,
|
|
padding: f
|
|
}),
|
|
reset: function () {
|
|
A.reset.call(this);
|
|
var l = this.cfg
|
|
, d = l.iv
|
|
, l = l.mode;
|
|
if (this._xformMode == this._ENC_XFORM_MODE) {
|
|
var n = l.createEncryptor
|
|
} else {
|
|
n = l.createDecryptor,
|
|
this._minBufferSize = 1
|
|
}
|
|
this._mode = n.call(l, this, d && d.words)
|
|
},
|
|
_doProcessBlock: function (d, c) {
|
|
this._mode.processBlock(d, c)
|
|
},
|
|
_doFinalize: function () {
|
|
var d = this.cfg.padding;
|
|
if (this._xformMode == this._ENC_XFORM_MODE) {
|
|
d.pad(this._data, this.blockSize);
|
|
var c = this._process(!0)
|
|
} else {
|
|
c = this._process(!0),
|
|
d.unpad(c)
|
|
}
|
|
return c
|
|
},
|
|
blockSize: 4
|
|
});
|
|
var h = j.CipherParams = i.extend({
|
|
init: function (b) {
|
|
this.mixIn(b)
|
|
},
|
|
toString: function (b) {
|
|
return (b || this.formatter).stringify(this)
|
|
}
|
|
})
|
|
, m = (g.format = {}).OpenSSL = {
|
|
stringify: function (d) {
|
|
var c = d.ciphertext;
|
|
d = d.salt;
|
|
return (d ? D.create([1398893684, 1701076831]).concat(d).concat(c) : c).toString(e)
|
|
},
|
|
parse: function (l) {
|
|
l = e.parse(l);
|
|
var d = l.words;
|
|
if (1398893684 == d[0] && 1701076831 == d[1]) {
|
|
var n = D.create(d.slice(2, 4));
|
|
d.splice(0, 4);
|
|
l.sigBytes -= 16
|
|
}
|
|
return h.create({
|
|
ciphertext: l,
|
|
salt: n
|
|
})
|
|
}
|
|
}
|
|
, o = j.SerializableCipher = i.extend({
|
|
cfg: i.extend({
|
|
format: m
|
|
}),
|
|
encrypt: function (q, n, s, r) {
|
|
r = this.cfg.extend(r);
|
|
var p = q.createEncryptor(s, r);
|
|
n = p.finalize(n);
|
|
p = p.cfg;
|
|
return h.create({
|
|
ciphertext: n,
|
|
key: s,
|
|
iv: p.iv,
|
|
algorithm: q,
|
|
mode: p.mode,
|
|
padding: p.padding,
|
|
blockSize: q.blockSize,
|
|
formatter: r.format
|
|
})
|
|
},
|
|
decrypt: function (n, l, q, p) {
|
|
p = this.cfg.extend(p);
|
|
l = this._parse(l, p.format);
|
|
return n.createDecryptor(q, p).finalize(l.ciphertext)
|
|
},
|
|
_parse: function (d, c) {
|
|
return "string" == typeof d ? c.parse(d, this) : d
|
|
}
|
|
})
|
|
, g = (g.kdf = {}).OpenSSL = {
|
|
execute: function (n, l, q, p) {
|
|
p || (p = D.random(8));
|
|
n = z.create({
|
|
keySize: l + q
|
|
}).compute(n, p);
|
|
q = D.create(n.words.slice(l), 4 * q);
|
|
n.sigBytes = 4 * l;
|
|
return h.create({
|
|
key: n,
|
|
iv: q,
|
|
salt: p
|
|
})
|
|
}
|
|
}
|
|
, k = j.PasswordBasedCipher = o.extend({
|
|
cfg: o.cfg.extend({
|
|
kdf: g
|
|
}),
|
|
encrypt: function (a, q, p, n) {
|
|
n = this.cfg.extend(n);
|
|
p = n.kdf.execute(p, a.keySize, a.ivSize);
|
|
n.iv = p.iv;
|
|
a = o.encrypt.call(this, a, q, p.key, n);
|
|
a.mixIn(p);
|
|
return a
|
|
},
|
|
decrypt: function (a, q, p, n) {
|
|
n = this.cfg.extend(n);
|
|
q = this._parse(q, n.format);
|
|
p = n.kdf.execute(p, a.keySize, a.ivSize, q.salt);
|
|
n.iv = p.iv;
|
|
return o.decrypt.call(this, a, q, p.key, n)
|
|
}
|
|
})
|
|
}();
|
|
(function () {
|
|
for (var C = CryptoJS, K = C.lib.BlockCipher, Q = C.algo, M = [], E = [], D = [], I = [], m = [], A = [], S = [], h = [], J = [], L = [], T = [], R = 0; 256 > R; R++) {
|
|
T[R] = 128 > R ? R << 1 : R << 1 ^ 283
|
|
}
|
|
for (var P = 0, O = 0, R = 0; 256 > R; R++) {
|
|
var N = O ^ O << 1 ^ O << 2 ^ O << 3 ^ O << 4
|
|
, N = N >>> 8 ^ N & 255 ^ 99;
|
|
M[P] = N;
|
|
E[N] = P;
|
|
var f = T[P]
|
|
, B = T[f]
|
|
, o = T[B]
|
|
, g = 257 * T[N] ^ 16843008 * N;
|
|
D[P] = g << 24 | g >>> 8;
|
|
I[P] = g << 16 | g >>> 16;
|
|
m[P] = g << 8 | g >>> 24;
|
|
A[P] = g;
|
|
g = 16843009 * o ^ 65537 * B ^ 257 * f ^ 16843008 * P;
|
|
S[N] = g << 24 | g >>> 8;
|
|
h[N] = g << 16 | g >>> 16;
|
|
J[N] = g << 8 | g >>> 24;
|
|
L[N] = g;
|
|
P ? (P = f ^ T[T[T[o ^ f]]],
|
|
O ^= T[T[O]]) : P = O = 1
|
|
}
|
|
var i = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54]
|
|
, Q = Q.AES = K.extend({
|
|
_doReset: function () {
|
|
for (var b = this._key, r = b.words, q = b.sigBytes / 4, b = 4 * ((this._nRounds = q + 6) + 1), p = this._keySchedule = [], n = 0; n < b; n++) {
|
|
if (n < q) {
|
|
p[n] = r[n]
|
|
} else {
|
|
var l = p[n - 1];
|
|
n % q ? 6 < q && 4 == n % q && (l = M[l >>> 24] << 24 | M[l >>> 16 & 255] << 16 | M[l >>> 8 & 255] << 8 | M[l & 255]) : (l = l << 8 | l >>> 24,
|
|
l = M[l >>> 24] << 24 | M[l >>> 16 & 255] << 16 | M[l >>> 8 & 255] << 8 | M[l & 255],
|
|
l ^= i[n / q | 0] << 24);
|
|
p[n] = p[n - q] ^ l
|
|
}
|
|
}
|
|
r = this._invKeySchedule = [];
|
|
for (q = 0; q < b; q++) {
|
|
n = b - q,
|
|
l = q % 4 ? p[n] : p[n - 4],
|
|
r[q] = 4 > q || 4 >= n ? l : S[M[l >>> 24]] ^ h[M[l >>> 16 & 255]] ^ J[M[l >>> 8 & 255]] ^ L[M[l & 255]]
|
|
}
|
|
},
|
|
encryptBlock: function (d, c) {
|
|
this._doCryptBlock(d, c, this._keySchedule, D, I, m, A, M)
|
|
},
|
|
decryptBlock: function (b, j) {
|
|
var e = b[j + 1];
|
|
b[j + 1] = b[j + 3];
|
|
b[j + 3] = e;
|
|
this._doCryptBlock(b, j, this._invKeySchedule, S, h, J, L, E);
|
|
e = b[j + 1];
|
|
b[j + 1] = b[j + 3];
|
|
b[j + 3] = e
|
|
},
|
|
_doCryptBlock: function (ac, ab, aa, Z, Y, U, G, X) {
|
|
for (var F = this._nRounds, W = ac[ab] ^ aa[0], V = ac[ab + 1] ^ aa[1], H = ac[ab + 2] ^ aa[2], z = ac[ab + 3] ^ aa[3], y = 4, w = 1; w < F; w++) {
|
|
var x = Z[W >>> 24] ^ Y[V >>> 16 & 255] ^ U[H >>> 8 & 255] ^ G[z & 255] ^ aa[y++]
|
|
, v = Z[V >>> 24] ^ Y[H >>> 16 & 255] ^ U[z >>> 8 & 255] ^ G[W & 255] ^ aa[y++]
|
|
, u = Z[H >>> 24] ^ Y[z >>> 16 & 255] ^ U[W >>> 8 & 255] ^ G[V & 255] ^ aa[y++]
|
|
, z = Z[z >>> 24] ^ Y[W >>> 16 & 255] ^ U[V >>> 8 & 255] ^ G[H & 255] ^ aa[y++]
|
|
, W = x
|
|
, V = v
|
|
, H = u
|
|
}
|
|
x = (X[W >>> 24] << 24 | X[V >>> 16 & 255] << 16 | X[H >>> 8 & 255] << 8 | X[z & 255]) ^ aa[y++];
|
|
v = (X[V >>> 24] << 24 | X[H >>> 16 & 255] << 16 | X[z >>> 8 & 255] << 8 | X[W & 255]) ^ aa[y++];
|
|
u = (X[H >>> 24] << 24 | X[z >>> 16 & 255] << 16 | X[W >>> 8 & 255] << 8 | X[V & 255]) ^ aa[y++];
|
|
z = (X[z >>> 24] << 24 | X[W >>> 16 & 255] << 16 | X[V >>> 8 & 255] << 8 | X[H & 255]) ^ aa[y++];
|
|
ac[ab] = x;
|
|
ac[ab + 1] = v;
|
|
ac[ab + 2] = u;
|
|
ac[ab + 3] = z
|
|
},
|
|
keySize: 8
|
|
});
|
|
C.AES = K._createHelper(Q)
|
|
}
|
|
)();
|
|
|
|
|
|
const Encrypt = function (user, password) {
|
|
let result = {}
|
|
var t = CryptoJS.MD5(user),
|
|
i = CryptoJS.enc.Utf8.parse(t),
|
|
r = CryptoJS.enc.Utf8.parse(password),
|
|
u = CryptoJS.AES.encrypt(password, i, {
|
|
iv: r
|
|
});
|
|
result.t = t.toString()
|
|
result.i = i.toString()
|
|
result.r = r.toString()
|
|
result.u = u.toString()
|
|
return result
|
|
};
|
|
|
|
|
|
module.exports={
|
|
Encrypt
|
|
} |