| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329 |
- function K(a) {
- switch (a) {
- case 0:
- return '0';
- case 1:
- return '1';
- case 2:
- return '2';
- case 3:
- return '3';
- case 4:
- return '4';
- case 5:
- return '5';
- case 6:
- return '6';
- case 7:
- return '7';
- case 8:
- return '8';
- case 9:
- return '9';
- case 10:
- return 'a';
- case 11:
- return 'b';
- case 12:
- return 'c';
- case 13:
- return 'd';
- case 14:
- return 'e';
- case 15:
- return 'f';
- }
- }
- function t(a) {
- if (isNaN(a)) return a.toString(16);
- else {
- for (var b = ''; a >= 16;) (b = K(a % 16) + b), (a = parseInt(a / 16));
- return (b = K(a % 16) + b);
- }
- }
- function L(a) {
- var b,
- c = '';
- for (b = 0; b < a.length; b++) a.charAt(b) != ' ' && (c += a.charAt(b));
- return c;
- }
- function k(a, b) {
- for (var c = 0; a > 0;) (a & 1) != 0 && (c ^= b), (a >>>= 1), (b <<= 1);
- for (var d = 65536, f = 72448; d >= 256;) (c & d) != 0 && (c ^= f), (d >>= 1), (f >>= 1);
- return c;
- }
- function M(a) {
- var b;
- for (b = 0; b < 16; b++) a[b] = I[a[b]];
- return a;
- }
- function N(a) {
- var b = Array(4),
- c,
- d = a.length / 4,
- f = d + 6,
- i = Array(4 * (f + 1));
- for (c = 0; c < a.length; c++) i[c] = a[c];
- for (c = d; c < 4 * (f + 1);) {
- for (a = 0; a < 4; a++) b[a] = i[(c - 1) * 4 + a];
- if (c % d == 0) {
- var b = [b[1], b[2], b[3], b[0]],
- a = (b = M(b)),
- j = a[0],
- h = c / d,
- l = 2,
- e = 1;
- for (h--; h > 0;) (h & 1) != 0 && (e = k(e, l)), (l = k(l, l)), (h >>= 1);
- a[0] = j ^ e;
- } else d > 6 && c % d == 4 && (b = M(b));
- for (a = 0; a < 4; a++) i[c * 4 + a] = i[(c - d) * 4 + a] ^ b[a];
- c++;
- }
- return i;
- }
- function u(a, b) {
- var c;
- for (c = 0; c < 16; c++) a[c] = b[a[c]];
- return a;
- }
- function O(a) {
- var b, c, d, f;
- b = a[v];
- c = a[w];
- d = a[x];
- f = a[y];
- a[v] = c;
- a[w] = d;
- a[x] = f;
- a[y] = b;
- b = a[z];
- c = a[A];
- d = a[B];
- f = a[C];
- a[z] = d;
- a[A] = f;
- a[B] = b;
- a[C] = c;
- b = a[D];
- c = a[E];
- d = a[F];
- f = a[G];
- a[D] = f;
- a[E] = b;
- a[F] = c;
- a[G] = d;
- return a;
- }
- function P(a) {
- var b, c, d, f;
- b = a[v];
- c = a[w];
- d = a[x];
- f = a[y];
- a[v] = f;
- a[w] = b;
- a[x] = c;
- a[y] = d;
- b = a[z];
- c = a[A];
- d = a[B];
- f = a[C];
- a[z] = d;
- a[A] = f;
- a[B] = b;
- a[C] = c;
- b = a[D];
- c = a[E];
- d = a[F];
- f = a[G];
- a[D] = c;
- a[E] = d;
- a[F] = f;
- a[G] = b;
- return a;
- }
- function q(a, b, c) {
- var d;
- for (d = 0; d < 4; d++)
- (a[0 + d] ^= b[c + d * 4]),
- (a[4 + d] ^= b[c + d * 4 + 1]),
- (a[8 + d] ^= b[c + d * 4 + 2]),
- (a[12 + d] ^= b[c + d * 4 + 3]);
- return a;
- }
- function H(a) {
- var b,
- c,
- d = Array(16);
- for (b = 0; b < 4; b++) for (c = 0; c < 4; c++) d[b * 4 + c] = a[c * 4 + b];
- return d;
- }
- function J(a) {
- for (var b = Array(a.length / 2), c = 0; c < a.length / 2; c++) {
- var d = b,
- f = c,
- i;
- a: {
- i = a.substr(c * 2, 2);
- var j = i.charCodeAt(0);
- if (j >= 48 && j <= 57) j -= 48;
- else if (j >= 65 && j <= 70) j -= 55;
- else if (j >= 97 && j <= 102) j -= 87;
- else {
- window.alert(i.charAt(1) + ' is not a valid hex digit');
- i = -1;
- break a;
- }
- var h = i.charCodeAt(1);
- if (h >= 48 && h <= 57) h -= 48;
- else if (h >= 65 && h <= 70) h -= 55;
- else if (h >= 97 && h <= 102) h -= 87;
- else {
- window.alert(i.charAt(2) + ' is not a valid hex digit');
- i = -1;
- break a;
- }
- i = j * 16 + h;
- }
- d[f] = i;
- if (b[c] < 0) {
- b[0] = -1;
- break;
- }
- }
- return b;
- }
- var I = [
- 99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240,
- 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4,
- 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214,
- 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251,
- 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255,
- 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144,
- 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231,
- 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221,
- 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152,
- 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15,
- 176, 84, 187, 22
- ],
- Q = [
- 82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52,
- 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161,
- 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92,
- 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0,
- 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138,
- 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53,
- 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27,
- 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177,
- 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224,
- 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99,
- 85, 33, 12, 125
- ],
- v = 4,
- w = 5,
- x = 6,
- y = 7,
- z = 8,
- A = 9,
- B = 10,
- C = 11,
- D = 12,
- E = 13,
- F = 14,
- G = 15,
- p = Array(16);
- this.encrypt = function (a, b) {
- var c = J(a),
- d;
- d = Array(16);
- b.length > 16 && (d = Array(b.length));
- var f;
- if (b.length >= 16) for (f = 0; f < b.length; f++) d[f] = b.charCodeAt(f);
- else {
- for (f = 0; f < b.length; f++) d[f] = b.charCodeAt(f);
- for (f = b.length; f < 16; f++) d[f] = 0;
- }
- var i = '';
- f = d.length / 16;
- for (var j = 0; j < f; j++) {
- var h;
- var l = c,
- e = d.slice(j * 16, (j + 1) * 16);
- h = Array(44);
- var g = Array(16),
- m = void 0;
- if (e[0] < 0) h = void 0;
- else if (l[0] < 0) h = void 0;
- else {
- h = N(l);
- l = l.length / 4 + 6;
- g = H(e);
- g = q(g, h, 0);
- for (m = 1; m < l; m++) {
- for (var g = u(g, I), e = (g = O(g)), n = (g = void 0), o = void 0, r = void 0, s = void 0, g = 0; g < 4; g++)
- (n = e[0 + g]),
- (o = e[4 + g]),
- (r = e[8 + g]),
- (s = e[12 + g]),
- (e[0 + g] = k(2, n) ^ k(3, o) ^ r ^ s),
- (e[4 + g] = n ^ k(2, o) ^ k(3, r) ^ s),
- (e[8 + g] = n ^ o ^ k(2, r) ^ k(3, s)),
- (e[12 + g] = k(3, n) ^ o ^ r ^ k(2, s));
- g = e;
- g = q(g, h, m * 16);
- }
- u(g, I);
- O(g);
- q(g, h, l * 16);
- p = H(g);
- h = t((p[0] >>> 4) & 15) + t(p[0] & 15);
- for (m = 1; m < 16; m++) h += t((p[m] >>> 4) & 15) + t(p[m] & 15);
- }
- i += h;
- }
- return L(i);
- };
- this.mydecrypt = function (a, b) {
- for (var c = J(a), b = L(b), d = '', f = b.length / 32, i = 0; i < f; i++) {
- var j;
- var h = c,
- l = b.slice(i * 32, (i + 1) * 32);
- j = Array(44);
- var e = Array(16),
- g = void 0,
- l = J(l);
- if (l[0] < 0) j = void 0;
- else if (h[0] < 0) j = void 0;
- else {
- j = N(h);
- g = h.length / 4 + 6;
- e = H(l);
- e = q(e, j, g * 16);
- for (g -= 1; g >= 1; g--) {
- for (
- var e = P(e), e = u(e, Q), l = (e = q(e, j, g * 16)), m = (h = e = void 0), n = void 0, o = void 0, e = 0;
- e < 4;
- e++
- )
- (h = l[0 + e]),
- (m = l[4 + e]),
- (n = l[8 + e]),
- (o = l[12 + e]),
- (l[0 + e] = k(14, h) ^ k(11, m) ^ k(13, n) ^ k(9, o)),
- (l[4 + e] = k(9, h) ^ k(14, m) ^ k(11, n) ^ k(13, o)),
- (l[8 + e] = k(13, h) ^ k(9, m) ^ k(14, n) ^ k(11, o)),
- (l[12 + e] = k(11, h) ^ k(13, m) ^ k(9, n) ^ k(14, o));
- e = l;
- }
- P(e);
- u(e, Q);
- q(e, j, 0);
- p = H(e);
- j = '';
- for (g = 0; g < 16; g++) j += String.fromCharCode(p[g]);
- }
- d += j;
- }
- for (i = d.length - 1; i >= 0; i--) if (d.charCodeAt(i) > 31 && d.charCodeAt(i) < 128) break;
- return d.substring(0, i + 1);
- };
|