@ivujs/i-utils 1.1.14 → 1.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/dist/cjs/ID-card/index.cjs +87 -0
  2. package/dist/cjs/array/index.cjs +470 -0
  3. package/dist/cjs/clipboard/index.cjs +128 -0
  4. package/dist/cjs/color/index.cjs +193 -0
  5. package/dist/cjs/constants/date.cjs +178 -0
  6. package/dist/cjs/constants/id-card.cjs +52 -0
  7. package/dist/cjs/constants/keycode.cjs +117 -0
  8. package/dist/cjs/constants/lang.cjs +13 -0
  9. package/dist/cjs/constants/math.cjs +13 -0
  10. package/dist/cjs/constants/regexp.cjs +53 -0
  11. package/dist/cjs/constants/sort.cjs +15 -0
  12. package/dist/cjs/cookie/index.cjs +70 -0
  13. package/dist/cjs/crypto/aes/aes.cjs +480 -0
  14. package/dist/cjs/crypto/aes/index.cjs +27 -0
  15. package/dist/cjs/crypto/base32/base32.cjs +357 -0
  16. package/dist/cjs/crypto/base32/index.cjs +41 -0
  17. package/dist/cjs/crypto/base64/base64.cjs +348 -0
  18. package/dist/cjs/crypto/base64/index.cjs +59 -0
  19. package/dist/cjs/crypto/des/des.cjs +257 -0
  20. package/dist/cjs/crypto/des/index.cjs +28 -0
  21. package/dist/cjs/crypto/md5/index.cjs +24 -0
  22. package/dist/cjs/crypto/md5/md5.cjs +897 -0
  23. package/dist/cjs/crypto/sha/sha1/index.cjs +24 -0
  24. package/dist/cjs/crypto/sha/sha1/sha1.cjs +529 -0
  25. package/dist/cjs/crypto/sha/sha256/index.cjs +43 -0
  26. package/dist/cjs/crypto/sha/sha256/sha256.cjs +595 -0
  27. package/dist/cjs/crypto/sha/sha3/index.cjs +41 -0
  28. package/dist/cjs/crypto/sha/sha3/sha3.cjs +624 -0
  29. package/dist/cjs/crypto/sha/sha512/index.cjs +81 -0
  30. package/dist/cjs/crypto/sha/sha512/sha512.cjs +950 -0
  31. package/dist/cjs/crypto/sm/lib/asn1.cjs +149 -0
  32. package/dist/cjs/crypto/sm/lib/ec.cjs +315 -0
  33. package/dist/cjs/crypto/sm/lib/jsbn.cjs +1608 -0
  34. package/dist/cjs/crypto/sm/lib/sm3.cjs +158 -0
  35. package/dist/cjs/crypto/sm/lib/utils.cjs +170 -0
  36. package/dist/cjs/crypto/sm/sm2/index.cjs +112 -0
  37. package/dist/cjs/crypto/sm/sm2/sm2.cjs +231 -0
  38. package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
  39. package/dist/cjs/crypto/sm/sm3/sm3.cjs +93 -0
  40. package/dist/cjs/crypto/sm/sm4/index.cjs +27 -0
  41. package/dist/cjs/crypto/sm/sm4/sm4.cjs +327 -0
  42. package/dist/cjs/crypto/tea/index.cjs +25 -0
  43. package/dist/cjs/crypto/tea/tea.cjs +187 -0
  44. package/dist/cjs/date/index.cjs +1266 -0
  45. package/dist/cjs/desensitized/index.cjs +75 -0
  46. package/dist/cjs/device/index.cjs +151 -0
  47. package/dist/cjs/dom/index.cjs +129 -0
  48. package/dist/cjs/file/index.cjs +333 -0
  49. package/dist/cjs/function/index.cjs +69 -0
  50. package/dist/cjs/id/index.cjs +1 -1
  51. package/dist/cjs/index.cjs +398 -47
  52. package/dist/cjs/keycode/index.cjs +33 -0
  53. package/dist/cjs/math/index.cjs +278 -0
  54. package/dist/cjs/number/index.cjs +31 -0
  55. package/dist/cjs/object/index.cjs +272 -0
  56. package/dist/cjs/pagination/index.cjs +131 -0
  57. package/dist/cjs/random/index.cjs +24 -0
  58. package/dist/cjs/regexp/index.cjs +100 -0
  59. package/dist/cjs/storage/index.cjs +11 -0
  60. package/dist/cjs/storage/localStorage.cjs +37 -0
  61. package/dist/cjs/storage/sessionStorage.cjs +37 -0
  62. package/dist/cjs/string/index.cjs +358 -0
  63. package/dist/cjs/url/index.cjs +258 -0
  64. package/dist/cjs/validate/index.cjs +468 -0
  65. package/dist/cjs/weapp/index.cjs +142 -0
  66. package/dist/es/ID-card/index.d.ts +31 -0
  67. package/dist/es/ID-card/index.mjs +81 -0
  68. package/dist/es/array/index.d.ts +203 -0
  69. package/dist/es/array/index.mjs +441 -0
  70. package/dist/es/clipboard/index.d.ts +29 -0
  71. package/dist/es/clipboard/index.mjs +122 -0
  72. package/dist/es/color/index.d.ts +52 -0
  73. package/dist/es/color/index.mjs +183 -0
  74. package/dist/es/constants/date.d.ts +174 -0
  75. package/dist/es/constants/date.mjs +176 -0
  76. package/dist/es/constants/id-card.d.ts +43 -0
  77. package/dist/es/constants/id-card.mjs +50 -0
  78. package/dist/es/constants/index.d.ts +7 -0
  79. package/dist/es/constants/keycode.d.ts +103 -0
  80. package/dist/es/constants/keycode.mjs +115 -0
  81. package/dist/es/constants/lang.d.ts +4 -0
  82. package/dist/es/constants/lang.mjs +11 -0
  83. package/dist/es/constants/math.d.ts +4 -0
  84. package/dist/es/constants/math.mjs +11 -0
  85. package/dist/es/constants/regexp.d.ts +24 -0
  86. package/dist/es/constants/regexp.mjs +51 -0
  87. package/dist/es/constants/sort.d.ts +5 -0
  88. package/dist/es/constants/sort.mjs +13 -0
  89. package/dist/es/cookie/index.d.ts +29 -0
  90. package/dist/es/cookie/index.mjs +64 -0
  91. package/dist/es/crypto/aes/aes.d.ts +156 -0
  92. package/dist/es/crypto/aes/aes.mjs +478 -0
  93. package/dist/es/crypto/aes/index.d.ts +16 -0
  94. package/dist/es/crypto/aes/index.mjs +24 -0
  95. package/dist/es/crypto/base32/base32.d.ts +3 -0
  96. package/dist/es/crypto/base32/base32.mjs +353 -0
  97. package/dist/es/crypto/base32/index.d.ts +24 -0
  98. package/dist/es/crypto/base32/index.mjs +36 -0
  99. package/dist/es/crypto/base64/base64.d.ts +5 -0
  100. package/dist/es/crypto/base64/base64.mjs +342 -0
  101. package/dist/es/crypto/base64/index.d.ts +36 -0
  102. package/dist/es/crypto/base64/index.mjs +52 -0
  103. package/dist/es/crypto/des/des.d.ts +52 -0
  104. package/dist/es/crypto/des/des.mjs +255 -0
  105. package/dist/es/crypto/des/index.d.ts +14 -0
  106. package/dist/es/crypto/des/index.mjs +25 -0
  107. package/dist/es/crypto/index.d.ts +8 -0
  108. package/dist/es/crypto/md5/index.d.ts +13 -0
  109. package/dist/es/crypto/md5/index.mjs +21 -0
  110. package/dist/es/crypto/md5/md5.d.ts +144 -0
  111. package/dist/es/crypto/md5/md5.mjs +894 -0
  112. package/dist/es/crypto/sha/index.d.ts +4 -0
  113. package/dist/es/crypto/sha/sha1/index.d.ts +13 -0
  114. package/dist/es/crypto/sha/sha1/index.mjs +21 -0
  115. package/dist/es/crypto/sha/sha1/sha1.d.ts +2 -0
  116. package/dist/es/crypto/sha/sha1/sha1.mjs +526 -0
  117. package/dist/es/crypto/sha/sha256/index.d.ts +26 -0
  118. package/dist/es/crypto/sha/sha256/index.mjs +38 -0
  119. package/dist/es/crypto/sha/sha256/sha256.d.ts +4 -0
  120. package/dist/es/crypto/sha/sha256/sha256.mjs +590 -0
  121. package/dist/es/crypto/sha/sha3/index.d.ts +24 -0
  122. package/dist/es/crypto/sha/sha3/index.mjs +36 -0
  123. package/dist/es/crypto/sha/sha3/sha3.d.ts +4 -0
  124. package/dist/es/crypto/sha/sha3/sha3.mjs +619 -0
  125. package/dist/es/crypto/sha/sha512/index.d.ts +52 -0
  126. package/dist/es/crypto/sha/sha512/index.mjs +72 -0
  127. package/dist/es/crypto/sha/sha512/sha512.d.ts +8 -0
  128. package/dist/es/crypto/sha/sha512/sha512.mjs +941 -0
  129. package/dist/es/crypto/sm/index.d.ts +3 -0
  130. package/dist/es/crypto/sm/lib/asn1.d.ts +12 -0
  131. package/dist/es/crypto/sm/lib/asn1.mjs +146 -0
  132. package/dist/es/crypto/sm/lib/ec.d.ts +126 -0
  133. package/dist/es/crypto/sm/lib/ec.mjs +312 -0
  134. package/dist/es/crypto/sm/lib/jsbn.d.ts +198 -0
  135. package/dist/es/crypto/sm/lib/jsbn.mjs +1605 -0
  136. package/dist/es/crypto/sm/lib/sm3.d.ts +5 -0
  137. package/dist/es/crypto/sm/lib/sm3.mjs +155 -0
  138. package/dist/es/crypto/sm/lib/utils.d.ts +53 -0
  139. package/dist/es/crypto/sm/lib/utils.mjs +158 -0
  140. package/dist/es/crypto/sm/sm2/index.d.ts +71 -0
  141. package/dist/es/crypto/sm/sm2/index.mjs +101 -0
  142. package/dist/es/crypto/sm/sm2/sm2.d.ts +34 -0
  143. package/dist/es/crypto/sm/sm2/sm2.mjs +220 -0
  144. package/dist/es/crypto/sm/sm3/index.d.ts +7 -0
  145. package/dist/es/crypto/sm/sm3/index.mjs +13 -0
  146. package/dist/es/crypto/sm/sm3/sm3.d.ts +1 -0
  147. package/dist/es/crypto/sm/sm3/sm3.mjs +91 -0
  148. package/dist/es/crypto/sm/sm4/index.d.ts +16 -0
  149. package/dist/es/crypto/sm/sm4/index.mjs +24 -0
  150. package/dist/es/crypto/sm/sm4/sm4.d.ts +2 -0
  151. package/dist/es/crypto/sm/sm4/sm4.mjs +324 -0
  152. package/dist/es/crypto/tea/index.d.ts +14 -0
  153. package/dist/es/crypto/tea/index.mjs +22 -0
  154. package/dist/es/crypto/tea/tea.d.ts +69 -0
  155. package/dist/es/crypto/tea/tea.mjs +185 -0
  156. package/dist/es/date/index.d.ts +547 -0
  157. package/dist/es/date/index.mjs +1179 -0
  158. package/dist/es/desensitized/index.d.ts +38 -0
  159. package/dist/es/desensitized/index.mjs +69 -0
  160. package/dist/es/device/index.d.ts +67 -0
  161. package/dist/es/device/index.mjs +137 -0
  162. package/dist/es/dom/index.d.ts +57 -0
  163. package/dist/es/dom/index.mjs +119 -0
  164. package/dist/es/file/index.d.ts +93 -0
  165. package/dist/es/file/index.mjs +317 -0
  166. package/dist/es/function/index.d.ts +23 -0
  167. package/dist/es/function/index.mjs +65 -0
  168. package/dist/es/id/index.mjs +1 -1
  169. package/dist/es/index.d.ts +25 -42
  170. package/dist/es/index.mjs +54 -40
  171. package/dist/es/keycode/index.d.ts +12 -0
  172. package/dist/es/keycode/index.mjs +30 -0
  173. package/dist/es/math/index.d.ts +66 -0
  174. package/dist/es/math/index.mjs +268 -0
  175. package/dist/es/number/index.d.ts +14 -0
  176. package/dist/es/number/index.mjs +28 -0
  177. package/dist/es/object/index.d.ts +83 -0
  178. package/dist/es/object/index.mjs +259 -0
  179. package/dist/es/pagination/index.d.ts +34 -0
  180. package/dist/es/pagination/index.mjs +125 -0
  181. package/dist/es/random/index.d.ts +15 -0
  182. package/dist/es/random/index.mjs +21 -0
  183. package/dist/es/regexp/index.d.ts +63 -0
  184. package/dist/es/regexp/index.mjs +89 -0
  185. package/dist/es/storage/index.d.ts +7 -0
  186. package/dist/es/storage/index.mjs +9 -0
  187. package/dist/es/storage/localStorage.d.ts +21 -0
  188. package/dist/es/storage/localStorage.mjs +32 -0
  189. package/dist/es/storage/sessionStorage.d.ts +21 -0
  190. package/dist/es/storage/sessionStorage.mjs +32 -0
  191. package/dist/es/string/index.d.ts +121 -0
  192. package/dist/es/string/index.mjs +339 -0
  193. package/dist/es/url/index.d.ts +118 -0
  194. package/dist/es/url/index.mjs +240 -0
  195. package/dist/es/validate/index.d.ts +228 -0
  196. package/dist/es/validate/index.mjs +431 -0
  197. package/dist/es/weapp/index.d.ts +57 -0
  198. package/dist/es/weapp/index.mjs +131 -0
  199. package/dist/index.d.ts +2850 -53
  200. package/dist/lib/index.full.cjs.js +14230 -67
  201. package/dist/lib/index.full.cjs.min.js +64 -2
  202. package/dist/lib/index.full.cjs.min.js.map +1 -1
  203. package/dist/lib/index.full.esm.js +13881 -63
  204. package/dist/lib/index.full.esm.min.js +59 -2
  205. package/dist/lib/index.full.esm.min.js.map +1 -1
  206. package/dist/lib/index.full.umd.js +14230 -67
  207. package/dist/lib/index.full.umd.min.js +64 -2
  208. package/dist/lib/index.full.umd.min.js.map +1 -1
  209. package/dist/resolver/auto-imports.cjs +337 -11
  210. package/dist/resolver/auto-imports.mjs +337 -11
  211. package/dist/resolver/index.cjs +1 -1
  212. package/dist/resolver/index.mjs +1 -1
  213. package/package.json +1 -1
@@ -0,0 +1,348 @@
1
+ 'use strict';
2
+
3
+ /*
4
+ * [hi-base64]{@link https://github.com/emn178/hi-base64}
5
+ *
6
+ * @version 0.3.1
7
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
8
+ * @copyright Chen, Yi-Cyuan 2014-2023
9
+ * @license MIT
10
+ */
11
+ /* jslint bitwise: true */
12
+ var ENCODING_ERROR = "not a UTF-8 string";
13
+ var WINDOW = typeof window === "object";
14
+ var root = WINDOW ? window : {};
15
+ if (root.HI_BASE64_NO_WINDOW) {
16
+ WINDOW = false;
17
+ }
18
+ var WEB_WORKER = !WINDOW && typeof self === "object";
19
+ var NODE_JS = !root.HI_BASE64_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
20
+ if (NODE_JS) {
21
+ root = global;
22
+ }
23
+ else if (WEB_WORKER) {
24
+ root = self;
25
+ }
26
+ var BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
27
+ var BASE64_DECODE_CHAR = {};
28
+ for (var i = 0; i < 64; ++i) {
29
+ BASE64_DECODE_CHAR[BASE64_ENCODE_CHAR[i]] = i;
30
+ }
31
+ BASE64_DECODE_CHAR["-"] = 62;
32
+ BASE64_DECODE_CHAR["_"] = 63;
33
+ var cleanBase64Str = function (base64Str) {
34
+ return base64Str.split("=")[0].replace(/[\r\n]/g, "");
35
+ };
36
+ var utf8ToBytes = function (str) {
37
+ var bytes = [];
38
+ for (var i = 0; i < str.length; i++) {
39
+ var c = str.charCodeAt(i);
40
+ if (c < 0x80) {
41
+ bytes[bytes.length] = c;
42
+ }
43
+ else if (c < 0x800) {
44
+ bytes[bytes.length] = 0xc0 | (c >> 6);
45
+ bytes[bytes.length] = 0x80 | (c & 0x3f);
46
+ }
47
+ else if (c < 0xd800 || c >= 0xe000) {
48
+ bytes[bytes.length] = 0xe0 | (c >> 12);
49
+ bytes[bytes.length] = 0x80 | ((c >> 6) & 0x3f);
50
+ bytes[bytes.length] = 0x80 | (c & 0x3f);
51
+ }
52
+ else {
53
+ c = 0x10000 + (((c & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
54
+ bytes[bytes.length] = 0xf0 | (c >> 18);
55
+ bytes[bytes.length] = 0x80 | ((c >> 12) & 0x3f);
56
+ bytes[bytes.length] = 0x80 | ((c >> 6) & 0x3f);
57
+ bytes[bytes.length] = 0x80 | (c & 0x3f);
58
+ }
59
+ }
60
+ return bytes;
61
+ };
62
+ var decodeAsBytes = function (base64Str) {
63
+ base64Str = cleanBase64Str(base64Str);
64
+ var v1, v2, v3, v4, bytes = [], index = 0, length = base64Str.length;
65
+ // 4 char to 3 bytes
66
+ for (var i = 0, count = (length >> 2) << 2; i < count;) {
67
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
68
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
69
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
70
+ v4 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
71
+ bytes[index++] = ((v1 << 2) | (v2 >>> 4)) & 255;
72
+ bytes[index++] = ((v2 << 4) | (v3 >>> 2)) & 255;
73
+ bytes[index++] = ((v3 << 6) | v4) & 255;
74
+ }
75
+ // remain bytes
76
+ var remain = length - count;
77
+ if (remain === 2) {
78
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
79
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
80
+ bytes[index++] = ((v1 << 2) | (v2 >>> 4)) & 255;
81
+ }
82
+ else if (remain === 3) {
83
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
84
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
85
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
86
+ bytes[index++] = ((v1 << 2) | (v2 >>> 4)) & 255;
87
+ bytes[index++] = ((v2 << 4) | (v3 >>> 2)) & 255;
88
+ }
89
+ return bytes;
90
+ };
91
+ var encodeFromBytes = function (bytes) {
92
+ var v1, v2, v3, base64Str = [], length = bytes.length;
93
+ for (var i = 0, count = parseInt(length / 3) * 3; i < count;) {
94
+ v1 = bytes[i++];
95
+ v2 = bytes[i++];
96
+ v3 = bytes[i++];
97
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63], BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63], BASE64_ENCODE_CHAR[v3 & 63]);
98
+ }
99
+ // remain char
100
+ var remain = length - count;
101
+ if (remain === 1) {
102
+ v1 = bytes[i];
103
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[(v1 << 4) & 63], "==");
104
+ }
105
+ else if (remain === 2) {
106
+ v1 = bytes[i++];
107
+ v2 = bytes[i];
108
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63], BASE64_ENCODE_CHAR[(v2 << 2) & 63], "=");
109
+ }
110
+ return base64Str.join("");
111
+ };
112
+ var btoa = root.btoa, atob = root.atob, utf8Base64Encode, utf8Base64Decode;
113
+ if (NODE_JS) {
114
+ var Buffer = require("buffer").Buffer;
115
+ btoa = function (str) {
116
+ return Buffer.from(str, "ascii").toString("base64");
117
+ };
118
+ utf8Base64Encode = function (str) {
119
+ return Buffer.from(str).toString("base64");
120
+ };
121
+ encodeFromBytes = utf8Base64Encode;
122
+ atob = function (base64Str) {
123
+ return Buffer.from(base64Str, "base64").toString("ascii");
124
+ };
125
+ utf8Base64Decode = function (base64Str) {
126
+ return Buffer.from(base64Str, "base64").toString();
127
+ };
128
+ }
129
+ else if (!btoa) {
130
+ btoa = function (str) {
131
+ var v1, v2, v3, base64Str = [], length = str.length;
132
+ for (var i = 0, count = parseInt(length / 3) * 3; i < count;) {
133
+ v1 = str.charCodeAt(i++);
134
+ v2 = str.charCodeAt(i++);
135
+ v3 = str.charCodeAt(i++);
136
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63], BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63], BASE64_ENCODE_CHAR[v3 & 63]);
137
+ }
138
+ // remain char
139
+ var remain = length - count;
140
+ if (remain === 1) {
141
+ v1 = str.charCodeAt(i);
142
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[(v1 << 4) & 63], "==");
143
+ }
144
+ else if (remain === 2) {
145
+ v1 = str.charCodeAt(i++);
146
+ v2 = str.charCodeAt(i);
147
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63], BASE64_ENCODE_CHAR[(v2 << 2) & 63], "=");
148
+ }
149
+ return base64Str.join("");
150
+ };
151
+ utf8Base64Encode = function (str) {
152
+ var v1, v2, v3, base64Str = [], bytes = utf8ToBytes(str), length = bytes.length;
153
+ for (var i = 0, count = parseInt(length / 3) * 3; i < count;) {
154
+ v1 = bytes[i++];
155
+ v2 = bytes[i++];
156
+ v3 = bytes[i++];
157
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63], BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63], BASE64_ENCODE_CHAR[v3 & 63]);
158
+ }
159
+ // remain char
160
+ var remain = length - count;
161
+ if (remain === 1) {
162
+ v1 = bytes[i];
163
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[(v1 << 4) & 63], "==");
164
+ }
165
+ else if (remain === 2) {
166
+ v1 = bytes[i++];
167
+ v2 = bytes[i];
168
+ base64Str.push(BASE64_ENCODE_CHAR[v1 >>> 2], BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63], BASE64_ENCODE_CHAR[(v2 << 2) & 63], "=");
169
+ }
170
+ return base64Str.join("");
171
+ };
172
+ atob = function (base64Str) {
173
+ var v1, v2, v3, v4, str = [], length = base64Str.length;
174
+ // 4 char to 3 bytes
175
+ for (var i = 0, count = (length >> 2) << 2; i < count;) {
176
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
177
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
178
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
179
+ v4 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
180
+ str.push(String.fromCharCode(((v1 << 2) | (v2 >>> 4)) & 255), String.fromCharCode(((v2 << 4) | (v3 >>> 2)) & 255), String.fromCharCode(((v3 << 6) | v4) & 255));
181
+ }
182
+ // remain bytes
183
+ var remain = length - count;
184
+ if (remain === 2) {
185
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
186
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
187
+ str.push(String.fromCharCode(((v1 << 2) | (v2 >>> 4)) & 255));
188
+ }
189
+ else if (remain === 3) {
190
+ v1 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
191
+ v2 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
192
+ v3 = BASE64_DECODE_CHAR[base64Str.charAt(i++)];
193
+ str.push(String.fromCharCode(((v1 << 2) | (v2 >>> 4)) & 255), String.fromCharCode(((v2 << 4) | (v3 >>> 2)) & 255));
194
+ }
195
+ return str.join("");
196
+ };
197
+ utf8Base64Decode = function (base64Str) {
198
+ var str = [], bytes = decodeAsBytes(base64Str), length = bytes.length;
199
+ var i = 0, followingChars = 0, b, c;
200
+ while (i < length) {
201
+ b = bytes[i++];
202
+ if (b <= 0x7f) {
203
+ str.push(String.fromCharCode(b));
204
+ continue;
205
+ }
206
+ else if (b > 0xbf && b <= 0xdf) {
207
+ c = b & 0x1f;
208
+ followingChars = 1;
209
+ }
210
+ else if (b <= 0xef) {
211
+ c = b & 0x0f;
212
+ followingChars = 2;
213
+ }
214
+ else if (b <= 0xf7) {
215
+ c = b & 0x07;
216
+ followingChars = 3;
217
+ }
218
+ else {
219
+ throw new Error(ENCODING_ERROR);
220
+ }
221
+ for (var j = 0; j < followingChars; ++j) {
222
+ b = bytes[i++];
223
+ if (b < 0x80 || b > 0xbf) {
224
+ throw new Error(ENCODING_ERROR);
225
+ }
226
+ c <<= 6;
227
+ c += b & 0x3f;
228
+ }
229
+ if (c >= 0xd800 && c <= 0xdfff) {
230
+ throw new Error(ENCODING_ERROR);
231
+ }
232
+ if (c > 0x10ffff) {
233
+ throw new Error(ENCODING_ERROR);
234
+ }
235
+ if (c <= 0xffff) {
236
+ str.push(String.fromCharCode(c));
237
+ }
238
+ else {
239
+ c -= 0x10000;
240
+ str.push(String.fromCharCode((c >> 10) + 0xd800), String.fromCharCode((c & 0x3ff) + 0xdc00));
241
+ }
242
+ }
243
+ return str.join("");
244
+ };
245
+ }
246
+ else {
247
+ utf8Base64Encode = function (str) {
248
+ var result = [];
249
+ for (var i = 0; i < str.length; i++) {
250
+ var charcode = str.charCodeAt(i);
251
+ if (charcode < 0x80) {
252
+ result.push(String.fromCharCode(charcode));
253
+ }
254
+ else if (charcode < 0x800) {
255
+ result.push(String.fromCharCode(0xc0 | (charcode >> 6)), String.fromCharCode(0x80 | (charcode & 0x3f)));
256
+ }
257
+ else if (charcode < 0xd800 || charcode >= 0xe000) {
258
+ result.push(String.fromCharCode(0xe0 | (charcode >> 12)), String.fromCharCode(0x80 | ((charcode >> 6) & 0x3f)), String.fromCharCode(0x80 | (charcode & 0x3f)));
259
+ }
260
+ else {
261
+ charcode = 0x10000 + (((charcode & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
262
+ result.push(String.fromCharCode(0xf0 | (charcode >> 18)), String.fromCharCode(0x80 | ((charcode >> 12) & 0x3f)), String.fromCharCode(0x80 | ((charcode >> 6) & 0x3f)), String.fromCharCode(0x80 | (charcode & 0x3f)));
263
+ }
264
+ }
265
+ return btoa(result.join(""));
266
+ };
267
+ utf8Base64Decode = function (base64Str) {
268
+ var tmpStr = atob(base64Str.replace(/-/g, "+").replace(/_/g, "/"));
269
+ if (!/[^\x00-\x7F]/.test(tmpStr)) {
270
+ return tmpStr;
271
+ }
272
+ var str = [], i = 0, length = tmpStr.length, followingChars = 0, b, c;
273
+ while (i < length) {
274
+ b = tmpStr.charCodeAt(i++);
275
+ if (b <= 0x7f) {
276
+ str.push(String.fromCharCode(b));
277
+ continue;
278
+ }
279
+ else if (b > 0xbf && b <= 0xdf) {
280
+ c = b & 0x1f;
281
+ followingChars = 1;
282
+ }
283
+ else if (b <= 0xef) {
284
+ c = b & 0x0f;
285
+ followingChars = 2;
286
+ }
287
+ else if (b <= 0xf7) {
288
+ c = b & 0x07;
289
+ followingChars = 3;
290
+ }
291
+ else {
292
+ throw new Error(ENCODING_ERROR);
293
+ }
294
+ for (var j = 0; j < followingChars; ++j) {
295
+ b = tmpStr.charCodeAt(i++);
296
+ if (b < 0x80 || b > 0xbf) {
297
+ throw new Error(ENCODING_ERROR);
298
+ }
299
+ c <<= 6;
300
+ c += b & 0x3f;
301
+ }
302
+ if (c >= 0xd800 && c <= 0xdfff) {
303
+ throw new Error(ENCODING_ERROR);
304
+ }
305
+ if (c > 0x10ffff) {
306
+ throw new Error(ENCODING_ERROR);
307
+ }
308
+ if (c <= 0xffff) {
309
+ str.push(String.fromCharCode(c));
310
+ }
311
+ else {
312
+ c -= 0x10000;
313
+ str.push(String.fromCharCode((c >> 10) + 0xd800), String.fromCharCode((c & 0x3ff) + 0xdc00));
314
+ }
315
+ }
316
+ return str.join("");
317
+ };
318
+ }
319
+ var encode = function (str, asciiOnly) {
320
+ var notString = typeof str != "string";
321
+ if (notString && str.constructor === root.ArrayBuffer) {
322
+ str = new Uint8Array(str);
323
+ }
324
+ if (notString) {
325
+ return encodeFromBytes(str);
326
+ }
327
+ else {
328
+ if (/[^\x00-\x7F]/.test(str)) {
329
+ return utf8Base64Encode(str);
330
+ }
331
+ else {
332
+ return btoa(str);
333
+ }
334
+ }
335
+ };
336
+ var decode = function (base64Str, asciiOnly) {
337
+ base64Str = cleanBase64Str(base64Str);
338
+ return asciiOnly ? atob(base64Str) : utf8Base64Decode(base64Str);
339
+ };
340
+ /* 以下是内部实现需要的es模块化导出方法 */
341
+ const utf8Encode = utf8Base64Encode;
342
+ const utf8Decode = utf8Base64Decode;
343
+
344
+ exports.decode = decode;
345
+ exports.decodeAsBytes = decodeAsBytes;
346
+ exports.encode = encode;
347
+ exports.utf8Decode = utf8Decode;
348
+ exports.utf8Encode = utf8Encode;
@@ -0,0 +1,59 @@
1
+ 'use strict';
2
+
3
+ var base64 = require('./base64.cjs');
4
+
5
+ /**
6
+ * base64 加密
7
+ * @param {String} str 字符串
8
+ * @returns {String} 返回加密后的字符串
9
+ */
10
+ function encode(str) {
11
+ return base64.encode(str);
12
+ }
13
+ /**
14
+ * base64 解密
15
+ * @param {String} str 字符串
16
+ * @returns {String} 返回解密后的字符串
17
+ */
18
+ function decode(str) {
19
+ return base64.decode(str);
20
+ }
21
+ /**
22
+ * base64 utf8加密
23
+ * @param {String} str 字符串
24
+ * @returns {String} 返回加密后的字符串
25
+ */
26
+ function utf8Encode(str) {
27
+ return base64.utf8Encode(str);
28
+ }
29
+ /**
30
+ * base64 utf8解密
31
+ * @param {String} str 字符串
32
+ * @returns {String} 返回解密后的字符串
33
+ */
34
+ function utf8Decode(str) {
35
+ return base64.utf8Decode(str);
36
+ }
37
+ /**
38
+ * base64 加密字节数组
39
+ * @param {Array} array 数组
40
+ * @returns {String} 返回加密后的字符串
41
+ */
42
+ function encodeAsBytes(array) {
43
+ return base64.encode(array);
44
+ }
45
+ /**
46
+ * base64 解密字节数组
47
+ * @param {String} str 字符串
48
+ * @returns {Array} 返回解密后的字节数组
49
+ */
50
+ function decodeAsBytes(str) {
51
+ return base64.decodeAsBytes(str);
52
+ }
53
+
54
+ exports.decode = decode;
55
+ exports.decodeAsBytes = decodeAsBytes;
56
+ exports.encode = encode;
57
+ exports.encodeAsBytes = encodeAsBytes;
58
+ exports.utf8Decode = utf8Decode;
59
+ exports.utf8Encode = utf8Encode;
@@ -0,0 +1,257 @@
1
+ 'use strict';
2
+
3
+ var index = require('../base64/index.cjs');
4
+
5
+ const { encode, decode } = index;
6
+ /**
7
+ * 使用方法
8
+ * 实例化对象 new Des()
9
+ * 加密方法 encrypt(key,plaintext)
10
+ * 解密方法 decrypt(key,ciphertext)
11
+ * 示例---------------------------------------------------
12
+ * var Des = new Des();
13
+ * var key = 'custom key';
14
+ * var value = '需要加密的内容'
15
+ * var ciphertext = encrypt(key,value);//加密
16
+ * var plaintext = encrypt(key,ciphertext);//解密
17
+ */
18
+ function Des(key, value) {
19
+ this.key = key;
20
+ this.value = value;
21
+ }
22
+ /**
23
+ * @param {String} key 密钥
24
+ * @param {String} value 内容
25
+ * @param {String} type 类型 ->encrypt加密|decrypt解密
26
+ */
27
+ Des.prototype._DesCreate = function (key, value, type) {
28
+ var message = value;
29
+ if (type === "decrypt") {
30
+ var requestValue = "";
31
+ for (var i = value.substr(0, 2) == "0x" ? 2 : 0; i < value.length; i += 2) {
32
+ requestValue += String.fromCharCode(parseInt(value.substr(i, 2), 16));
33
+ }
34
+ message = requestValue;
35
+ }
36
+ 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);
37
+ var spfunction2 = new Array(-2146402272, -2147450880, 0x8000, 0x108020, 0x100000, 0x20, -2146435040, -2147450848, -2147483616, -2146402272, -2146402304, -2147483648, -2147450880, 0x100000, 0x20, -2146435040, 0x108000, 0x100020, -2147450848, 0, -2147483648, 0x8000, 0x108020, -2146435072, 0x100020, -2147483616, 0, 0x108000, 0x8020, -2146402304, -2146435072, 0x8020, 0, 0x108020, -2146435040, 0x100000, -2147450848, -2146435072, -2146402304, 0x8000, -2146435072, -2147450880, 0x20, -2146402272, 0x108020, 0x20, 0x8000, -2147483648, 0x8020, -2146402304, 0x100000, -2147483616, 0x100020, -2147450848, -2147483616, 0x100020, 0x108000, 0, -2147450880, 0x8020, -2147483648, -2146435040, -2146402272, 0x108000);
38
+ 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);
39
+ 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);
40
+ 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);
41
+ 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);
42
+ 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);
43
+ 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);
44
+ var keys = this._DesCreateKeys(key);
45
+ var m = 0, i, j, temp, right1, right2, left, right, looping;
46
+ var endloop, loopinc;
47
+ var len = message.length;
48
+ var chunk = 0;
49
+ var iterations = keys.length == 32 ? 3 : 9;
50
+ if (iterations == 3) {
51
+ looping = type === "encrypt" ? new Array(0, 32, 2) : new Array(30, -2, -2);
52
+ }
53
+ else {
54
+ looping =
55
+ type === "encrypt" ? new Array(0, 32, 2, 62, 30, -2, 64, 96, 2) : new Array(94, 62, -2, 32, 64, 2, 30, -2, -2);
56
+ }
57
+ var result = "";
58
+ var tempresult = "";
59
+ while (m < len) {
60
+ left =
61
+ (message.charCodeAt(m++) << 24) |
62
+ (message.charCodeAt(m++) << 16) |
63
+ (message.charCodeAt(m++) << 8) |
64
+ message.charCodeAt(m++);
65
+ right =
66
+ (message.charCodeAt(m++) << 24) |
67
+ (message.charCodeAt(m++) << 16) |
68
+ (message.charCodeAt(m++) << 8) |
69
+ message.charCodeAt(m++);
70
+ temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
71
+ right ^= temp;
72
+ left ^= temp << 4;
73
+ temp = ((left >>> 16) ^ right) & 0x0000ffff;
74
+ right ^= temp;
75
+ left ^= temp << 16;
76
+ temp = ((right >>> 2) ^ left) & 0x33333333;
77
+ left ^= temp;
78
+ right ^= temp << 2;
79
+ temp = ((right >>> 8) ^ left) & 0x00ff00ff;
80
+ left ^= temp;
81
+ right ^= temp << 8;
82
+ temp = ((left >>> 1) ^ right) & 0x55555555;
83
+ right ^= temp;
84
+ left ^= temp << 1;
85
+ left = (left << 1) | (left >>> 31);
86
+ right = (right << 1) | (right >>> 31);
87
+ for (j = 0; j < iterations; j += 3) {
88
+ endloop = looping[j + 1];
89
+ loopinc = looping[j + 2];
90
+ for (i = looping[j]; i != endloop; i += loopinc) {
91
+ right1 = right ^ keys[i];
92
+ right2 = ((right >>> 4) | (right << 28)) ^ keys[i + 1];
93
+ temp = left;
94
+ left = right;
95
+ right =
96
+ temp ^
97
+ (spfunction2[(right1 >>> 24) & 0x3f] |
98
+ spfunction4[(right1 >>> 16) & 0x3f] |
99
+ spfunction6[(right1 >>> 8) & 0x3f] |
100
+ spfunction8[right1 & 0x3f] |
101
+ spfunction1[(right2 >>> 24) & 0x3f] |
102
+ spfunction3[(right2 >>> 16) & 0x3f] |
103
+ spfunction5[(right2 >>> 8) & 0x3f] |
104
+ spfunction7[right2 & 0x3f]);
105
+ }
106
+ temp = left;
107
+ left = right;
108
+ right = temp;
109
+ }
110
+ left = (left >>> 1) | (left << 31);
111
+ right = (right >>> 1) | (right << 31);
112
+ temp = ((left >>> 1) ^ right) & 0x55555555;
113
+ right ^= temp;
114
+ left ^= temp << 1;
115
+ temp = ((right >>> 8) ^ left) & 0x00ff00ff;
116
+ left ^= temp;
117
+ right ^= temp << 8;
118
+ temp = ((right >>> 2) ^ left) & 0x33333333;
119
+ left ^= temp;
120
+ right ^= temp << 2;
121
+ temp = ((left >>> 16) ^ right) & 0x0000ffff;
122
+ right ^= temp;
123
+ left ^= temp << 16;
124
+ temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
125
+ right ^= temp;
126
+ left ^= temp << 4;
127
+ tempresult += String.fromCharCode(left >>> 24, (left >>> 16) & 0xff, (left >>> 8) & 0xff, left & 0xff, right >>> 24, (right >>> 16) & 0xff, (right >>> 8) & 0xff, right & 0xff);
128
+ chunk += 8;
129
+ if (chunk == 512) {
130
+ result += tempresult;
131
+ tempresult = "";
132
+ chunk = 0;
133
+ }
134
+ }
135
+ var resultTempresult = result + tempresult;
136
+ if (type === "encrypt") {
137
+ var resultCiphertext = "";
138
+ var hexes = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
139
+ for (var i = 0; i < resultTempresult.length; i++) {
140
+ resultCiphertext += hexes[resultTempresult.charCodeAt(i) >> 4] + hexes[resultTempresult.charCodeAt(i) & 0xf];
141
+ }
142
+ return resultCiphertext;
143
+ }
144
+ return result + tempresult;
145
+ };
146
+ Des.prototype._DesCreateKeys = function (key) {
147
+ var pc2bytes0 = new Array(0, 0x4, 0x20000000, 0x20000004, 0x10000, 0x10004, 0x20010000, 0x20010004, 0x200, 0x204, 0x20000200, 0x20000204, 0x10200, 0x10204, 0x20010200, 0x20010204);
148
+ var pc2bytes1 = new Array(0, 0x1, 0x100000, 0x100001, 0x4000000, 0x4000001, 0x4100000, 0x4100001, 0x100, 0x101, 0x100100, 0x100101, 0x4000100, 0x4000101, 0x4100100, 0x4100101);
149
+ var pc2bytes2 = new Array(0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808, 0, 0x8, 0x800, 0x808, 0x1000000, 0x1000008, 0x1000800, 0x1000808);
150
+ var pc2bytes3 = new Array(0, 0x200000, 0x8000000, 0x8200000, 0x2000, 0x202000, 0x8002000, 0x8202000, 0x20000, 0x220000, 0x8020000, 0x8220000, 0x22000, 0x222000, 0x8022000, 0x8222000);
151
+ var pc2bytes4 = new Array(0, 0x40000, 0x10, 0x40010, 0, 0x40000, 0x10, 0x40010, 0x1000, 0x41000, 0x1010, 0x41010, 0x1000, 0x41000, 0x1010, 0x41010);
152
+ var pc2bytes5 = new Array(0, 0x400, 0x20, 0x420, 0, 0x400, 0x20, 0x420, 0x2000000, 0x2000400, 0x2000020, 0x2000420, 0x2000000, 0x2000400, 0x2000020, 0x2000420);
153
+ var pc2bytes6 = new Array(0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002, 0, 0x10000000, 0x80000, 0x10080000, 0x2, 0x10000002, 0x80002, 0x10080002);
154
+ var pc2bytes7 = new Array(0, 0x10000, 0x800, 0x10800, 0x20000000, 0x20010000, 0x20000800, 0x20010800, 0x20000, 0x30000, 0x20800, 0x30800, 0x20020000, 0x20030000, 0x20020800, 0x20030800);
155
+ var pc2bytes8 = new Array(0, 0x40000, 0, 0x40000, 0x2, 0x40002, 0x2, 0x40002, 0x2000000, 0x2040000, 0x2000000, 0x2040000, 0x2000002, 0x2040002, 0x2000002, 0x2040002);
156
+ var pc2bytes9 = new Array(0, 0x10000000, 0x8, 0x10000008, 0, 0x10000000, 0x8, 0x10000008, 0x400, 0x10000400, 0x408, 0x10000408, 0x400, 0x10000400, 0x408, 0x10000408);
157
+ var pc2bytes10 = new Array(0, 0x20, 0, 0x20, 0x100000, 0x100020, 0x100000, 0x100020, 0x2000, 0x2020, 0x2000, 0x2020, 0x102000, 0x102020, 0x102000, 0x102020);
158
+ var pc2bytes11 = new Array(0, 0x1000000, 0x200, 0x1000200, 0x200000, 0x1200000, 0x200200, 0x1200200, 0x4000000, 0x5000000, 0x4000200, 0x5000200, 0x4200000, 0x5200000, 0x4200200, 0x5200200);
159
+ var pc2bytes12 = new Array(0, 0x1000, 0x8000000, 0x8001000, 0x80000, 0x81000, 0x8080000, 0x8081000, 0x10, 0x1010, 0x8000010, 0x8001010, 0x80010, 0x81010, 0x8080010, 0x8081010);
160
+ var pc2bytes13 = new Array(0, 0x4, 0x100, 0x104, 0, 0x4, 0x100, 0x104, 0x1, 0x5, 0x101, 0x105, 0x1, 0x5, 0x101, 0x105);
161
+ var iterations = key.length > 8 ? 3 : 1;
162
+ var keys = new Array(32 * iterations);
163
+ var shifts = new Array(0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0);
164
+ var lefttemp, righttemp, m = 0, n = 0, temp;
165
+ for (var j = 0; j < iterations; j++) {
166
+ var left = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
167
+ var right = (key.charCodeAt(m++) << 24) | (key.charCodeAt(m++) << 16) | (key.charCodeAt(m++) << 8) | key.charCodeAt(m++);
168
+ temp = ((left >>> 4) ^ right) & 0x0f0f0f0f;
169
+ right ^= temp;
170
+ left ^= temp << 4;
171
+ temp = ((right >>> -16) ^ left) & 0x0000ffff;
172
+ left ^= temp;
173
+ right ^= temp << -16;
174
+ temp = ((left >>> 2) ^ right) & 0x33333333;
175
+ right ^= temp;
176
+ left ^= temp << 2;
177
+ temp = ((right >>> -16) ^ left) & 0x0000ffff;
178
+ left ^= temp;
179
+ right ^= temp << -16;
180
+ temp = ((left >>> 1) ^ right) & 0x55555555;
181
+ right ^= temp;
182
+ left ^= temp << 1;
183
+ temp = ((right >>> 8) ^ left) & 0x00ff00ff;
184
+ left ^= temp;
185
+ right ^= temp << 8;
186
+ temp = ((left >>> 1) ^ right) & 0x55555555;
187
+ right ^= temp;
188
+ left ^= temp << 1;
189
+ temp = (left << 8) | ((right >>> 20) & 0x000000f0);
190
+ left = (right << 24) | ((right << 8) & 0xff0000) | ((right >>> 8) & 0xff00) | ((right >>> 24) & 0xf0);
191
+ right = temp;
192
+ for (var i = 0; i < shifts.length; i++) {
193
+ if (shifts[i]) {
194
+ left = (left << 2) | (left >>> 26);
195
+ right = (right << 2) | (right >>> 26);
196
+ }
197
+ else {
198
+ left = (left << 1) | (left >>> 27);
199
+ right = (right << 1) | (right >>> 27);
200
+ }
201
+ left &= -15;
202
+ right &= -15;
203
+ lefttemp =
204
+ pc2bytes0[left >>> 28] |
205
+ pc2bytes1[(left >>> 24) & 0xf] |
206
+ pc2bytes2[(left >>> 20) & 0xf] |
207
+ pc2bytes3[(left >>> 16) & 0xf] |
208
+ pc2bytes4[(left >>> 12) & 0xf] |
209
+ pc2bytes5[(left >>> 8) & 0xf] |
210
+ pc2bytes6[(left >>> 4) & 0xf];
211
+ righttemp =
212
+ pc2bytes7[right >>> 28] |
213
+ pc2bytes8[(right >>> 24) & 0xf] |
214
+ pc2bytes9[(right >>> 20) & 0xf] |
215
+ pc2bytes10[(right >>> 16) & 0xf] |
216
+ pc2bytes11[(right >>> 12) & 0xf] |
217
+ pc2bytes12[(right >>> 8) & 0xf] |
218
+ pc2bytes13[(right >>> 4) & 0xf];
219
+ temp = ((righttemp >>> 16) ^ lefttemp) & 0x0000ffff;
220
+ keys[n++] = lefttemp ^ temp;
221
+ keys[n++] = righttemp ^ (temp << 16);
222
+ }
223
+ }
224
+ return keys;
225
+ };
226
+ /*
227
+ ------------------------------------------------------------------------------------
228
+ 以上方法对象的私有方法
229
+ 为了解决中文乱码
230
+ 使用base64先加密,再用des加密
231
+ 同理,解密时先用deds解密,再使用base64解密
232
+ ------------------------------------------------------------------------------------
233
+ */
234
+ /**
235
+ * 加密
236
+ * @param {String} key 密钥
237
+ * @param {String} plaintext 明文
238
+ * @return {String} ciphertext 密文
239
+ */
240
+ Des.prototype.encrypt = function (key, plaintext) {
241
+ var encodedString = encode(plaintext);
242
+ var ciphertext = this._DesCreate(key, encodedString, "encrypt");
243
+ return ciphertext;
244
+ };
245
+ /**
246
+ * 解密
247
+ * @param {String} key 密钥
248
+ * @param {String} ciphertext 密文
249
+ * @return {String} plaintext 明文
250
+ */
251
+ Des.prototype.decrypt = function (key, ciphertext) {
252
+ var decryptText = this._DesCreate(key, ciphertext, "decrypt"); // Des解密
253
+ var plaintext = decode(decryptText); // base64解密
254
+ return plaintext;
255
+ };
256
+
257
+ module.exports = Des;