PageSourceSearch

https://m.yes123.com.tw/js/security.js

js yes123.com.tw collected 2026-10-02 02:56:06 UTC 16,735 bytes, 227 lines download raw bytes

1//DES加解密方法
2var UtiSecurity = {
3    //自定義金鑰
4    key: 'YES123GO',
5    //加密
6    DESencrypt: function (message) {
7
8        var ciphertext = this.stringToHex(this.des(message, 1, 0));
9        return ciphertext;
10
11    },
12    //解密
13    DESdecrypt: function (message) {
14        if (message != null || message != '') {
15            var plaintext = this.des(this.HexTostring(message), 0, 0);
16        } else { var plaintext = '';}
17        return plaintext;
18
19    },
20    des: function (message, encrypt, mode, iv) {
21        var spfunction1 = new Array(0x1010400, 0, 0x10000, 0x1010404, 0x1010004, 0x10404, 0x4, 0x10000, 0x400, 0x1010400, 0x1010404, 0x400, 0x1000404, 0x1010004, 0x1000000, 0x4, 0x404, 0x1000400, 0x1000400, 0x10400, 0x10400, 0x1010000, 0x1010000, 0x1000404, 0x10004, 0x1000004, 0x1000004, 0x10004, 0, 0x404, 0x10404, 0x1000000, 0x10000, 0x1010404, 0x4, 0x1010000, 0x1010400, 0x1000000, 0x1000000, 0x400, 0x1010004, 0x10000, 0x10400, 0x1000004, 0x400, 0x4, 0x1000404, 0x10404, 0x1010404, 0x10004, 0x1010000, 0x1000404, 0x1000004, 0x404, 0x10404, 0x1010400, 0x404, 0x1000400, 0x1000400, 0, 0x10004, 0x10400, 0, 0x1010004);
22        var spfunction2 = new Array(-0x7fef7fe0, -0x7fff8000, 0x8000, 0x108020, 0x100000, 0x20, -0x7fefffe0, -0x7fff7fe0, -0x7fffffe0, -0x7fef7fe0, -0x7fef8000, -0x8000000, -0x7fff8000, 0x100000, 0x20, -0x7fefffe0, 0x108000, 0x100020, -0x7fff7fe0, 0, -0x8000000, 0x8000, 0x108020, -0x7ff00000, 0x100020, -0x7fffffe0, 0, 0x108000, 0x8020, -0x7fef8000, -0x7ff00000, 0x8020, 0, 0x108020, -0x7fefffe0, 0x100000, -0x7fff7fe0, -0x7ff00000, -0x7fef8000, 0x8000, -0x7ff00000, -0x7fff8000, 0x20, -0x7fef7fe0, 0x108020, 0x20, 0x8000, -0x8000000, 0x8020, -0x7fef8000, 0x100000, -0x7fffffe0, 0x100020, -0x7fff7fe0, -0x7fffffe0, 0x100020, 0x108000, 0, -0x7fff8000, 0x8020, -0x8000000, -0x7fefffe0, -0x7fef7fe0, 0x108000);
23        var spfunction3 = new Array(0x208, 0x8020200, 0, 0x8020008, 0x8000200, 0, 0x20208, 0x8000200, 0x20008, 0x8000008, 0x8000008, 0x20000, 0x8020208, 0x20008, 0x8020000, 0x208, 0x8000000, 0x8, 0x8020200, 0x200, 0x20200, 0x8020000, 0x8020008, 0x20208, 0x8000208, 0x20200, 0x20000, 0x8000208, 0x8, 0x8020208, 0x200, 0x8000000, 0x8020200, 0x8000000, 0x20008, 0x208, 0x20000, 0x8020200, 0x8000200, 0, 0x200, 0x20008, 0x8020208, 0x8000200, 0x8000008, 0x200, 0, 0x8020008, 0x8000208, 0x20000, 0x8000000, 0x8020208, 0x8, 0x20208, 0x20200, 0x8000008, 0x8020000, 0x8000208, 0x208, 0x8020000, 0x20208, 0x8, 0x8020008, 0x20200);
24        var spfunction4 = new Array(0x802001, 0x2081, 0x2081, 0x80, 0x802080, 0x800081, 0x800001, 0x2001, 0, 0x802000, 0x802000, 0x802081, 0x81, 0, 0x800080, 0x800001, 0x1, 0x2000, 0x800000, 0x802001, 0x80, 0x800000, 0x2001, 0x2080, 0x800081, 0x1, 0x2080, 0x800080, 0x2000, 0x802080, 0x802081, 0x81, 0x800080, 0x800001, 0x802000, 0x802081, 0x81, 0, 0, 0x802000, 0x2080, 0x800080, 0x800081, 0x1, 0x802001, 0x2081, 0x2081, 0x80, 0x802081, 0x81, 0x1, 0x2000, 0x800001, 0x2001, 0x802080, 0x800081, 0x2001, 0x2080, 0x800000, 0x802001, 0x80, 0x800000, 0x2000, 0x802080);
25        var spfunction5 = new Array(0x100, 0x2080100, 0x2080000, 0x42000100, 0x80000, 0x100, 0x40000000, 0x2080000, 0x40080100, 0x80000, 0x2000100, 0x40080100, 0x42000100, 0x42080000, 0x80100, 0x40000000, 0x2000000, 0x40080000, 0x40080000, 0, 0x40000100, 0x42080100, 0x42080100, 0x2000100, 0x42080000, 0x40000100, 0, 0x42000000, 0x2080100, 0x2000000, 0x42000000, 0x80100, 0x80000, 0x42000100, 0x100, 0x2000000, 0x40000000, 0x2080000, 0x42000100, 0x40080100, 0x2000100, 0x40000000, 0x42080000, 0x2080100, 0x40080100, 0x100, 0x2000000, 0x42080000, 0x42080100, 0x80100, 0x42000000, 0x42080100, 0x2080000, 0, 0x40080000, 0x42000000, 0x80100, 0x2000100, 0x40000100, 0x80000, 0, 0x40080000, 0x2080100, 0x40000100);
26        var spfunction6 = new Array(0x20000010, 0x20400000, 0x4000, 0x20404010, 0x20400000, 0x10, 0x20404010, 0x400000, 0x20004000, 0x404010, 0x400000, 0x20000010, 0x400010, 0x20004000, 0x20000000, 0x4010, 0, 0x400010, 0x20004010, 0x4000, 0x404000, 0x20004010, 0x10, 0x20400010, 0x20400010, 0, 0x404010, 0x20404000, 0x4010, 0x404000, 0x20404000, 0x20000000, 0x20004000, 0x10, 0x20400010, 0x404000, 0x20404010, 0x400000, 0x4010, 0x20000010, 0x400000, 0x20004000, 0x20000000, 0x4010, 0x20000010, 0x20404010, 0x404000, 0x20400000, 0x404010, 0x20404000, 0, 0x20400010, 0x10, 0x4000, 0x20400000, 0x404010, 0x4000, 0x400010, 0x20004010, 0, 0x20404000, 0x20000000, 0x400010, 0x20004010);
27        var spfunction7 = new Array(0x200000, 0x4200002, 0x4000802, 0, 0x800, 0x4000802, 0x200802, 0x4200800, 0x4200802, 0x200000, 0, 0x4000002, 0x2, 0x4000000, 0x4200002, 0x802, 0x4000800, 0x200802, 0x200002, 0x4000800, 0x4000002, 0x4200000, 0x4200800, 0x200002, 0x4200000, 0x800, 0x802, 0x4200802, 0x200800, 0x2, 0x4000000, 0x200800, 0x4000000, 0x200800, 0x200000, 0x4000802, 0x4000802, 0x4200002, 0x4200002, 0x2, 0x200002, 0x4000000, 0x4000800, 0x200000, 0x4200800, 0x802, 0x200802, 0x4200800, 0x802, 0x4000002, 0x4200802, 0x4200000, 0x200800, 0, 0x2, 0x4200802, 0, 0x200802, 0x4200000, 0x800, 0x4000002, 0x4000800, 0x800, 0x200002);
28        var spfunction8 = new Array(0x10001040, 0x1000, 0x40000, 0x10041040, 0x10000000, 0x10001040, 0x40, 0x10000000, 0x40040, 0x10040000, 0x10041040, 0x41000, 0x10041000, 0x41040, 0x1000, 0x40, 0x10040000, 0x10000040, 0x10001000, 0x1040, 0x41000, 0x40040, 0x10040040, 0x10041000, 0x1040, 0, 0, 0x10040040, 0x10000040, 0x10001000, 0x41040, 0x40000, 0x41040, 0x40000, 0x10041000, 0x1000, 0x40, 0x10040040, 0x1000, 0x41040, 0x10001000, 0x40, 0x10000040, 0x10040000, 0x10040040, 0x10000000, 0x40000, 0x10001040, 0, 0x10041040, 0x40040, 0x10000040, 0x10040000, 0x10001000, 0x10001040, 0, 0x10041040, 0x41000, 0x41000, 0x1040, 0x1040, 0x40040, 0x10000000, 0x10041000);
29        var keys = this.des_createKeys();
30        var m = 0,
31            i, j, temp, temp2, right1, right2, left, right, looping;
32        var cbcleft, cbcleft2, cbcright, cbcright2;
33        var endloop, loopinc;
34        var len = message.length;
35        var chunk = 0;
36        var iterations = keys.length == 32 ? 3 : 9;
37        if (iterations == 3) {
38            looping = encrypt ? new Array(0, 32, 2) : new Array(30, -2, -2);
39        } else {
40            looping = encrypt ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2);
41        }
42        message += "\0\0\0\0\0\0\0\0";
43        result = "";
44        tempresult = "";
45        if (mode == 1) {
46            cbcleft = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
47            cbcright = (iv.charCodeAt(m++) << 24) | (iv.charCodeAt(m++) << 16) | (iv.charCodeAt(m++) << 8) | iv.charCodeAt(m++);
48            m = 0;
49        }
50        while (m < len) {
51            if (encrypt) {
52                left = (message.charCodeAt(m++) << 16) | message.charCodeAt(m++);
53                right = (message.charCodeAt(m++) << 16) | message.charCodeAt(m++);
54            } else {
55                left = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
56                right = (message.charCodeAt(m++) << 24) | (message.charCodeAt(m++) << 16) | (message.charCodeAt(m++) << 8) | message.charCodeAt(m++);
57            } if (mode == 1) {
58                if (encrypt) {
59                    left ^= cbcleft;
60                    right ^= cbcright;
61                } else {
62                    cbcleft2 = cbcleft;
63                    cbcright2 = cbcright;
64                    cbcleft = left;
65                    cbcright = right;
66                }
67            }
68            temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
69            right ^= temp;
70            left ^= (temp << 4);
71            temp = ((left >>> 16) ^ right) & 0x0000ffff;
72            right ^= temp;
73            left ^= (temp << 16);
74            temp = ((right >>> 2) ^ left) & 0x33333333;
75            left ^= temp;
76            right ^= (temp << 2);
77            temp = ((right >>> 8) ^ left) & 0x00ff00ff;
78            left ^= temp;
79            right ^= (temp << 8);
80            temp = ((left >>> 1) ^ right) & 0x55555555;
81            right ^= temp;
82            left ^= (temp << 1);
83            left = ((left << 1) | (left >>> 31));
84            right = ((right << 1) | (right >>> 31));
85            for (j = 0; j < iterations; j += 3) {
86                endloop = looping[j + 1];
87                loopinc = looping[j + 2];
88                for (i = looping[j]; i != endloop; i += loopinc) {
89                    right1 = right ^ keys[i];
90                    right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];
91                    temp = left;
92                    left = right;
93                    right = temp ^ (spfunction2[(right1 >>> 24) & 0x3f] | spfunction4[(right1 >>> 16) & 0x3f] | spfunction6[(right1 >>> 8) & 0x3f] | spfunction8[right1 & 0x3f] | spfunction1[(right2 >>> 24) & 0x3f] | spfunction3[(right2 >>> 16) & 0x3f] | spfunction5[(right2 >>> 8) & 0x3f] | spfunction7[right2 & 0x3f]);
94                }
95                temp = left;
96                left = right;
97                right = temp;
98            }
99            left = ((left >>> 1) | (left << 31));
100            right = ((right >>> 1) | (right << 31));
101            temp = ((left >>> 1) ^ right) & 0x55555555;
102            right ^= temp;
103            left ^= (temp << 1);
104            temp = ((right >>> 8) ^ left) & 0x00ff00ff;
105            left ^= temp;
106            right ^= (temp << 8);
107            temp = ((right >>> 2) ^ left) & 0x33333333;
108            left ^= temp;
109            right ^= (temp << 2);
110            temp = ((left >>> 16) ^ right) & 0x0000ffff;
111            right ^= temp;
112            left ^= (temp << 16);
113            temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
114            right ^= temp;
115            left ^= (temp << 4);
116            if (mode == 1) {
117                if (encrypt) {
118                    cbcleft = left;
119                    cbcright = right;
120                } else {
121                    left ^= cbcleft2;
122                    right ^= cbcright2;
123                }
124            }
125            if (encrypt) {
126                tempresult += String.fromCharCode((left >>> 24), ((left >>> 16) & 0xff), ((left >>> 8) & 0xff), (left & 0xff), (right >>> 24), ((right >>> 16) & 0xff), ((right >>> 8) & 0xff), (right & 0xff));
127            } else {
128                tempresult += String.fromCharCode(((left >>> 16) & 0xffff), (left & 0xffff), ((right >>> 16) & 0xffff), (right & 0xffff));
129            }
130            encrypt ? chunk += 16 : chunk += 8;
131            if (chunk == 512) {
132                result += tempresult;
133                tempresult = "";
134                chunk = 0;
135            }
136        }
137        return result + tempresult;
138    },
139    des_createKeys: function () {
140        pc2bytes0 = new Array(0, 0x4, 0x20000000, 0x20000004, 0x10000, 0x10004, 0x20010000, 0x20010004, 0x200, 0x204, 0x20000200, 0x20000204, 0x10200, 0x10204, 0x20010200, 0x20010204);
141        pc2bytes1 = new Array(0, 0x1, 0x100000, 0x100001, 0x4000000, 0x4000001, 0x4100000, 0x4100001, 0x100, 0x101, 0x100100, 0x100101, 0x4000100, 0x4000101, 0x4100100, 0x4100101);
142        pc2bytes2 = new Array(0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808, 0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808);
143        pc2bytes3 = new Array(0, 0x200000, 0x8000000, 0x8200000, 0x2000, 0x202000, 0x8002000, 0x8202000, 0x20000, 0x220000, 0x8020000, 0x8220000, 0x22000, 0x222000, 0x8022000, 0x8222000);
144        pc2bytes4 = new Array(0, 0x40000, 0x10, 0x40010, 0, 0x40000, 0x10, 0x40010, 0x1000, 0x41000, 0x1010, 0x41010, 0x1000, 0x41000, 0x1010, 0x41010);
145        pc2bytes5 = new Array(0, 0x400, 0x20, 0x420, 0, 0x400, 0x20, 0x420, 0x2000000, 0x2000400, 0x2000020, 0x2000420, 0x2000000, 0x2000400, 0x2000020, 0x2000420);
146        pc2bytes6 = new Array(0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002, 0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002);
147        pc2bytes7 = new Array(0, 0x10000, 0x800, 0x10800, 0x20000000, 0x20010000, 0x20000800, 0x20010800, 0x20000, 0x30000, 0x20800, 0x30800, 0x20020000, 0x20030000, 0x20020800, 0x20030800);
148        pc2bytes8 = new Array(0, 0x40000, 0, 0x40000, 0x2, 0x40002, 0x2, 0x40002, 0x2000000, 0x2040000, 0x2000000, 0x2040000, 0x2000002, 0x2040002, 0x2000002, 0x2040002);
149        pc2bytes9 = new Array(0, 0x10000000, 0x8, 0x10000008, 0, 0x10000000, 0x8, 0x10000008, 0x400, 0x10000400, 0x408, 0x10000408, 0x400, 0x10000400, 0x408, 0x10000408);
150        pc2bytes10 = new Array(0, 0x20, 0, 0x20, 0x100000, 0x100020, 0x100000, 0x100020, 0x2000, 0x2020, 0x2000, 0x2020, 0x102000, 0x102020, 0x102000, 0x102020);
151        pc2bytes11 = new Array(0, 0x1000000, 0x200, 0x1000200, 0x200000, 0x1200000, 0x200200, 0x1200200, 0x4000000, 0x5000000, 0x4000200, 0x5000200, 0x4200000, 0x5200000, 0x4200200, 0x5200200);
152        pc2bytes12 = new Array(0, 0x1000, 0x8000000, 0x8001000, 0x80000, 0x81000, 0x8080000, 0x8081000, 0x10, 0x1010, 0x8000010, 0x8001010, 0x80010, 0x81010, 0x8080010, 0x8081010);
153        pc2bytes13 = new Array(0, 0x4, 0x100, 0x104, 0, 0x4, 0x100, 0x104, 0x1, 0x5, 0x101, 0x105, 0x1, 0x5, 0x101, 0x105);
154        var iterations = this.key.length >= 24 ? 3 : 1;
155        var keys = new Array(32 * iterations);
156        var shifts = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
157        var lefttemp, righttemp, m = 0,
158            n = 0,
159            temp;
160        for (var j = 0; j < iterations; j++) {
161            left = (this.key.charCodeAt(m++) << 24) | (this.key.charCodeAt(m++) << 16) | (this.key.charCodeAt(m++) << 8) | this.key.charCodeAt(m++);
162            right = (this.key.charCodeAt(m++) << 24) | (this.key.charCodeAt(m++) << 16) | (this.key.charCodeAt(m++) << 8) | this.key.charCodeAt(m++);
163            temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
164            right ^= temp;
165            left ^= (temp << 4);
166            temp = ((right >>> -16) ^ left) & 0x0000ffff;
167            left ^= temp;
168            right ^= (temp << -16);
169            temp = ((left >>> 2) ^ right) & 0x33333333;
170            right ^= temp;
171            left ^= (temp << 2);
172            temp = ((right >>> -16) ^ left) & 0x0000ffff;
173            left ^= temp;
174            right ^= (temp << -16);
175            temp = ((left >>> 1) ^ right) & 0x55555555;
176            right ^= temp;
177            left ^= (temp << 1);
178            temp = ((right >>> 8) ^ left) & 0x00ff00ff;
179            left ^= temp;
180            right ^= (temp << 8);
181            temp = ((left >>> 1) ^ right) & 0x55555555;
182            right ^= temp;
183            left ^= (temp << 1);
184            temp = (left << 8) | ((right >>> 20) & 0x000000f0);
185            left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);
186            right = temp;
187            for (i = 0; i < shifts.length; i++) {
188                if (shifts[i]) {
189                    left = (left << 2) | (left >>> 26);
190                    right = (right << 2) | (right >>> 26);
191                } else {
192                    left = (left << 1) | (left >>> 27);
193                    right = (right << 1) | (right >>> 27);
194                }
195                left &= -0xf;
196                right &= -0xf;
197                lefttemp = pc2bytes0[left >>> 28] | pc2bytes1[(left >>> 24) & 0xf] | pc2bytes2[(left >>> 20) & 0xf] | pc2bytes3[(left >>> 16) & 0xf] | pc2bytes4[(left >>> 12) & 0xf] | pc2bytes5[(left >>> 8) & 0xf] | pc2bytes6[(left >>> 4) & 0xf];
198                righttemp = pc2bytes7[right >>> 28] | pc2bytes8[(right >>> 24) & 0xf] | pc2bytes9[(right >>> 20) & 0xf] | pc2bytes10[(right >>> 16) & 0xf] | pc2bytes11[(right >>> 12) & 0xf] | pc2bytes12[(right >>> 8) & 0xf] | pc2bytes13[(right >>> 4) & 0xf];
199                temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff;
200                keys[n++] = lefttemp ^ temp;
201                keys[n++] = righttemp ^ (temp << 16);
202            }
203        }
204        return keys;
205
206    },
207    stringToHex: function (s) {
208        var r = "";
209        var hexes = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
210        for (var i = 0; i < (s.length) ; i++) {
211            r += hexes[s.charCodeAt(i) >> 4] + hexes[s.charCodeAt(i) & 0xf];
212        }
213        return r;
214    },
215    HexTostring: function (s) {
216        var r = "";
217        for (var i = 0; i < s.length; i += 2) {
218            var sxx = parseInt(s.substring(i, i + 2), 16);
219            r += String.fromCharCode(sxx);
220        }
221        return r;
222
223    }
224
225
226
227}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.