@ivujs/i-utils 1.1.18 → 2.0.0

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 (204) hide show
  1. package/README.md +96 -30
  2. package/dist/cjs/ID-card/index.cjs +87 -0
  3. package/dist/cjs/array/index.cjs +470 -0
  4. package/dist/cjs/clipboard/index.cjs +128 -0
  5. package/dist/cjs/color/index.cjs +193 -0
  6. package/dist/cjs/constants/date.cjs +178 -0
  7. package/dist/cjs/constants/id-card.cjs +52 -0
  8. package/dist/cjs/constants/keycode.cjs +117 -0
  9. package/dist/cjs/constants/lang.cjs +13 -0
  10. package/dist/cjs/constants/math.cjs +13 -0
  11. package/dist/cjs/constants/regexp.cjs +53 -0
  12. package/dist/cjs/constants/sort.cjs +15 -0
  13. package/dist/cjs/cookie/index.cjs +70 -0
  14. package/dist/cjs/crypto/aes/aes.cjs +480 -0
  15. package/dist/cjs/crypto/aes/index.cjs +27 -0
  16. package/dist/cjs/crypto/base32/base32.cjs +357 -0
  17. package/dist/cjs/crypto/base32/index.cjs +41 -0
  18. package/dist/cjs/crypto/base64/base64.cjs +348 -0
  19. package/dist/cjs/crypto/base64/index.cjs +59 -0
  20. package/dist/cjs/crypto/des/des.cjs +257 -0
  21. package/dist/cjs/crypto/des/index.cjs +28 -0
  22. package/dist/cjs/crypto/md5/index.cjs +24 -0
  23. package/dist/cjs/crypto/md5/md5.cjs +897 -0
  24. package/dist/cjs/crypto/sha/sha1/index.cjs +24 -0
  25. package/dist/cjs/crypto/sha/sha1/sha1.cjs +529 -0
  26. package/dist/cjs/crypto/sha/sha256/index.cjs +43 -0
  27. package/dist/cjs/crypto/sha/sha256/sha256.cjs +595 -0
  28. package/dist/cjs/crypto/sha/sha3/index.cjs +41 -0
  29. package/dist/cjs/crypto/sha/sha3/sha3.cjs +624 -0
  30. package/dist/cjs/crypto/sha/sha512/index.cjs +81 -0
  31. package/dist/cjs/crypto/sha/sha512/sha512.cjs +950 -0
  32. package/dist/cjs/crypto/sm/lib/asn1.cjs +149 -0
  33. package/dist/cjs/crypto/sm/lib/ec.cjs +315 -0
  34. package/dist/cjs/crypto/sm/lib/jsbn.cjs +1608 -0
  35. package/dist/cjs/crypto/sm/lib/sm3.cjs +158 -0
  36. package/dist/cjs/crypto/sm/lib/utils.cjs +170 -0
  37. package/dist/cjs/crypto/sm/sm2/index.cjs +112 -0
  38. package/dist/cjs/crypto/sm/sm2/sm2.cjs +231 -0
  39. package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
  40. package/dist/cjs/crypto/sm/sm3/sm3.cjs +93 -0
  41. package/dist/cjs/crypto/sm/sm4/index.cjs +27 -0
  42. package/dist/cjs/crypto/sm/sm4/sm4.cjs +327 -0
  43. package/dist/cjs/crypto/tea/index.cjs +25 -0
  44. package/dist/cjs/crypto/tea/tea.cjs +187 -0
  45. package/dist/cjs/date/index.cjs +1266 -0
  46. package/dist/cjs/desensitized/index.cjs +75 -0
  47. package/dist/cjs/device/index.cjs +151 -0
  48. package/dist/cjs/dom/index.cjs +129 -0
  49. package/dist/cjs/file/index.cjs +333 -0
  50. package/dist/cjs/function/index.cjs +69 -0
  51. package/dist/cjs/index.cjs +402 -7
  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/index.d.ts +26 -1
  169. package/dist/es/index.mjs +57 -4
  170. package/dist/es/keycode/index.d.ts +12 -0
  171. package/dist/es/keycode/index.mjs +30 -0
  172. package/dist/es/math/index.d.ts +66 -0
  173. package/dist/es/math/index.mjs +268 -0
  174. package/dist/es/number/index.d.ts +14 -0
  175. package/dist/es/number/index.mjs +28 -0
  176. package/dist/es/object/index.d.ts +83 -0
  177. package/dist/es/object/index.mjs +259 -0
  178. package/dist/es/pagination/index.d.ts +34 -0
  179. package/dist/es/pagination/index.mjs +125 -0
  180. package/dist/es/random/index.d.ts +15 -0
  181. package/dist/es/random/index.mjs +21 -0
  182. package/dist/es/regexp/index.d.ts +63 -0
  183. package/dist/es/regexp/index.mjs +89 -0
  184. package/dist/es/storage/index.d.ts +7 -0
  185. package/dist/es/storage/index.mjs +9 -0
  186. package/dist/es/storage/localStorage.d.ts +21 -0
  187. package/dist/es/storage/localStorage.mjs +32 -0
  188. package/dist/es/storage/sessionStorage.d.ts +21 -0
  189. package/dist/es/storage/sessionStorage.mjs +32 -0
  190. package/dist/es/string/index.d.ts +121 -0
  191. package/dist/es/string/index.mjs +339 -0
  192. package/dist/es/url/index.d.ts +118 -0
  193. package/dist/es/url/index.mjs +240 -0
  194. package/dist/es/validate/index.d.ts +228 -0
  195. package/dist/es/validate/index.mjs +431 -0
  196. package/dist/es/weapp/index.d.ts +57 -0
  197. package/dist/es/weapp/index.mjs +131 -0
  198. package/dist/index.d.ts +2857 -17
  199. package/dist/lib/index.full.umd.js +14238 -31
  200. package/dist/lib/index.full.umd.min.js +64 -2
  201. package/dist/lib/index.full.umd.min.js.map +1 -1
  202. package/dist/resolver/auto-imports.cjs +337 -1
  203. package/dist/resolver/auto-imports.mjs +337 -1
  204. package/package.json +90 -87
@@ -0,0 +1,624 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * [js-sha3]{@link https://github.com/emn178/js-sha3}
5
+ *
6
+ * @version 0.9.3
7
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
8
+ * @copyright Chen, Yi-Cyuan 2015-2023
9
+ * @license MIT
10
+ */
11
+ /* jslint bitwise: true */
12
+ var INPUT_ERROR = "input is invalid type";
13
+ var FINALIZE_ERROR = "finalize already called";
14
+ var WINDOW = typeof window === "object";
15
+ var root = WINDOW ? window : {};
16
+ if (root.JS_SHA3_NO_WINDOW) {
17
+ WINDOW = false;
18
+ }
19
+ var WEB_WORKER = !WINDOW && typeof self === "object";
20
+ var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
21
+ if (NODE_JS) {
22
+ root = global;
23
+ }
24
+ else if (WEB_WORKER) {
25
+ root = self;
26
+ }
27
+ var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";
28
+ var HEX_CHARS = "0123456789abcdef".split("");
29
+ var SHAKE_PADDING = [31, 7936, 2031616, 520093696];
30
+ var CSHAKE_PADDING = [4, 1024, 262144, 67108864];
31
+ var KECCAK_PADDING = [1, 256, 65536, 16777216];
32
+ var PADDING = [6, 1536, 393216, 100663296];
33
+ var SHIFT = [0, 8, 16, 24];
34
+ var RC = [
35
+ 1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777,
36
+ 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,
37
+ 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896,
38
+ 2147483648, 2147483649, 0, 2147516424, 2147483648,
39
+ ];
40
+ var BITS = [224, 256, 384, 512];
41
+ var SHAKE_BITS = [128, 256];
42
+ var OUTPUT_TYPES = ["hex", "buffer", "arrayBuffer", "array", "digest"];
43
+ var CSHAKE_BYTEPAD = {
44
+ 128: 168,
45
+ 256: 136,
46
+ };
47
+ var isArray = root.JS_SHA3_NO_NODE_JS || !Array.isArray
48
+ ? function (obj) {
49
+ return Object.prototype.toString.call(obj) === "[object Array]";
50
+ }
51
+ : Array.isArray;
52
+ var isView = ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)
53
+ ? function (obj) {
54
+ return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
55
+ }
56
+ : ArrayBuffer.isView;
57
+ // [message: string, isString: bool]
58
+ var formatMessage = function (message) {
59
+ var type = typeof message;
60
+ if (type === "string") {
61
+ return [message, true];
62
+ }
63
+ if (type !== "object" || message === null) {
64
+ throw new Error(INPUT_ERROR);
65
+ }
66
+ if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
67
+ return [new Uint8Array(message), false];
68
+ }
69
+ if (!isArray(message) && !isView(message)) {
70
+ throw new Error(INPUT_ERROR);
71
+ }
72
+ return [message, false];
73
+ };
74
+ var empty = function (message) {
75
+ return formatMessage(message)[0].length === 0;
76
+ };
77
+ var cloneArray = function (array) {
78
+ var newArray = [];
79
+ for (var i = 0; i < array.length; ++i) {
80
+ newArray[i] = array[i];
81
+ }
82
+ return newArray;
83
+ };
84
+ var createOutputMethod = function (bits, padding, outputType) {
85
+ return function (message) {
86
+ return new Keccak(bits, padding, bits).update(message)[outputType]();
87
+ };
88
+ };
89
+ var createShakeOutputMethod = function (bits, padding, outputType) {
90
+ return function (message, outputBits) {
91
+ return new Keccak(bits, padding, outputBits).update(message)[outputType]();
92
+ };
93
+ };
94
+ var createCshakeOutputMethod = function (bits, padding, outputType) {
95
+ return function (message, outputBits, n, s) {
96
+ return methods["cshake" + bits].update(message, outputBits, n, s)[outputType]();
97
+ };
98
+ };
99
+ var createKmacOutputMethod = function (bits, padding, outputType) {
100
+ return function (key, message, outputBits, s) {
101
+ return methods["kmac" + bits].update(key, message, outputBits, s)[outputType]();
102
+ };
103
+ };
104
+ var createOutputMethods = function (method, createMethod, bits, padding) {
105
+ for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
106
+ var type = OUTPUT_TYPES[i];
107
+ method[type] = createMethod(bits, padding, type);
108
+ }
109
+ return method;
110
+ };
111
+ var createMethod = function (bits, padding) {
112
+ var method = createOutputMethod(bits, padding, "hex");
113
+ method.create = function () {
114
+ return new Keccak(bits, padding, bits);
115
+ };
116
+ method.update = function (message) {
117
+ return method.create().update(message);
118
+ };
119
+ return createOutputMethods(method, createOutputMethod, bits, padding);
120
+ };
121
+ var createShakeMethod = function (bits, padding) {
122
+ var method = createShakeOutputMethod(bits, padding, "hex");
123
+ method.create = function (outputBits) {
124
+ return new Keccak(bits, padding, outputBits);
125
+ };
126
+ method.update = function (message, outputBits) {
127
+ return method.create(outputBits).update(message);
128
+ };
129
+ return createOutputMethods(method, createShakeOutputMethod, bits, padding);
130
+ };
131
+ var createCshakeMethod = function (bits, padding) {
132
+ var w = CSHAKE_BYTEPAD[bits];
133
+ var method = createCshakeOutputMethod(bits, padding, "hex");
134
+ method.create = function (outputBits, n, s) {
135
+ if (empty(n) && empty(s)) {
136
+ return methods["shake" + bits].create(outputBits);
137
+ }
138
+ else {
139
+ return new Keccak(bits, padding, outputBits).bytepad([n, s], w);
140
+ }
141
+ };
142
+ method.update = function (message, outputBits, n, s) {
143
+ return method.create(outputBits, n, s).update(message);
144
+ };
145
+ return createOutputMethods(method, createCshakeOutputMethod, bits, padding);
146
+ };
147
+ var createKmacMethod = function (bits, padding) {
148
+ var w = CSHAKE_BYTEPAD[bits];
149
+ var method = createKmacOutputMethod(bits, padding, "hex");
150
+ method.create = function (key, outputBits, s) {
151
+ return new Kmac(bits, padding, outputBits).bytepad(["KMAC", s], w).bytepad([key], w);
152
+ };
153
+ method.update = function (key, message, outputBits, s) {
154
+ return method.create(key, outputBits, s).update(message);
155
+ };
156
+ return createOutputMethods(method, createKmacOutputMethod, bits, padding);
157
+ };
158
+ var algorithms = [
159
+ { name: "keccak", padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },
160
+ { name: "sha3", padding: PADDING, bits: BITS, createMethod: createMethod },
161
+ { name: "shake", padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },
162
+ { name: "cshake", padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },
163
+ { name: "kmac", padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod },
164
+ ];
165
+ var methods = {};
166
+ for (var i = 0; i < algorithms.length; ++i) {
167
+ var algorithm = algorithms[i];
168
+ var bits = algorithm.bits;
169
+ for (var j = 0; j < bits.length; ++j) {
170
+ var methodName = algorithm.name + "_" + bits[j];
171
+ methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);
172
+ if (algorithm.name !== "sha3") {
173
+ var newMethodName = algorithm.name + bits[j];
174
+ methods[newMethodName] = methods[methodName];
175
+ }
176
+ }
177
+ }
178
+ function Keccak(bits, padding, outputBits) {
179
+ this.blocks = [];
180
+ this.s = [];
181
+ this.padding = padding;
182
+ this.outputBits = outputBits;
183
+ this.reset = true;
184
+ this.finalized = false;
185
+ this.block = 0;
186
+ this.start = 0;
187
+ this.blockCount = (1600 - (bits << 1)) >> 5;
188
+ this.byteCount = this.blockCount << 2;
189
+ this.outputBlocks = outputBits >> 5;
190
+ this.extraBytes = (outputBits & 31) >> 3;
191
+ for (var i = 0; i < 50; ++i) {
192
+ this.s[i] = 0;
193
+ }
194
+ }
195
+ Keccak.prototype.update = function (message) {
196
+ if (this.finalized) {
197
+ throw new Error(FINALIZE_ERROR);
198
+ }
199
+ var result = formatMessage(message);
200
+ message = result[0];
201
+ var isString = result[1];
202
+ var blocks = this.blocks, byteCount = this.byteCount, length = message.length, blockCount = this.blockCount, index = 0, s = this.s, i, code;
203
+ while (index < length) {
204
+ if (this.reset) {
205
+ this.reset = false;
206
+ blocks[0] = this.block;
207
+ for (i = 1; i < blockCount + 1; ++i) {
208
+ blocks[i] = 0;
209
+ }
210
+ }
211
+ if (isString) {
212
+ for (i = this.start; index < length && i < byteCount; ++index) {
213
+ code = message.charCodeAt(index);
214
+ if (code < 0x80) {
215
+ blocks[i >> 2] |= code << SHIFT[i++ & 3];
216
+ }
217
+ else if (code < 0x800) {
218
+ blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];
219
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
220
+ }
221
+ else if (code < 0xd800 || code >= 0xe000) {
222
+ blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];
223
+ blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
224
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
225
+ }
226
+ else {
227
+ code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
228
+ blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];
229
+ blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];
230
+ blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];
231
+ blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
232
+ }
233
+ }
234
+ }
235
+ else {
236
+ for (i = this.start; index < length && i < byteCount; ++index) {
237
+ blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];
238
+ }
239
+ }
240
+ this.lastByteIndex = i;
241
+ if (i >= byteCount) {
242
+ this.start = i - byteCount;
243
+ this.block = blocks[blockCount];
244
+ for (i = 0; i < blockCount; ++i) {
245
+ s[i] ^= blocks[i];
246
+ }
247
+ f(s);
248
+ this.reset = true;
249
+ }
250
+ else {
251
+ this.start = i;
252
+ }
253
+ }
254
+ return this;
255
+ };
256
+ Keccak.prototype.encode = function (x, right) {
257
+ var o = x & 255, n = 1;
258
+ var bytes = [o];
259
+ x = x >> 8;
260
+ o = x & 255;
261
+ while (o > 0) {
262
+ bytes.unshift(o);
263
+ x = x >> 8;
264
+ o = x & 255;
265
+ ++n;
266
+ }
267
+ if (right) {
268
+ bytes.push(n);
269
+ }
270
+ else {
271
+ bytes.unshift(n);
272
+ }
273
+ this.update(bytes);
274
+ return bytes.length;
275
+ };
276
+ Keccak.prototype.encodeString = function (str) {
277
+ var result = formatMessage(str);
278
+ str = result[0];
279
+ var isString = result[1];
280
+ var bytes = 0, length = str.length;
281
+ if (isString) {
282
+ for (var i = 0; i < str.length; ++i) {
283
+ var code = str.charCodeAt(i);
284
+ if (code < 0x80) {
285
+ bytes += 1;
286
+ }
287
+ else if (code < 0x800) {
288
+ bytes += 2;
289
+ }
290
+ else if (code < 0xd800 || code >= 0xe000) {
291
+ bytes += 3;
292
+ }
293
+ else {
294
+ code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));
295
+ bytes += 4;
296
+ }
297
+ }
298
+ }
299
+ else {
300
+ bytes = length;
301
+ }
302
+ bytes += this.encode(bytes * 8);
303
+ this.update(str);
304
+ return bytes;
305
+ };
306
+ Keccak.prototype.bytepad = function (strs, w) {
307
+ var bytes = this.encode(w);
308
+ for (var i = 0; i < strs.length; ++i) {
309
+ bytes += this.encodeString(strs[i]);
310
+ }
311
+ var paddingBytes = (w - (bytes % w)) % w;
312
+ var zeros = [];
313
+ zeros.length = paddingBytes;
314
+ this.update(zeros);
315
+ return this;
316
+ };
317
+ Keccak.prototype.finalize = function () {
318
+ if (this.finalized) {
319
+ return;
320
+ }
321
+ this.finalized = true;
322
+ var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;
323
+ blocks[i >> 2] |= this.padding[i & 3];
324
+ if (this.lastByteIndex === this.byteCount) {
325
+ blocks[0] = blocks[blockCount];
326
+ for (i = 1; i < blockCount + 1; ++i) {
327
+ blocks[i] = 0;
328
+ }
329
+ }
330
+ blocks[blockCount - 1] |= 0x80000000;
331
+ for (i = 0; i < blockCount; ++i) {
332
+ s[i] ^= blocks[i];
333
+ }
334
+ f(s);
335
+ };
336
+ Keccak.prototype.toString = Keccak.prototype.hex = function () {
337
+ this.finalize();
338
+ var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i = 0, j = 0;
339
+ var hex = "", block;
340
+ while (j < outputBlocks) {
341
+ for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
342
+ block = s[i];
343
+ hex +=
344
+ HEX_CHARS[(block >> 4) & 0x0f] +
345
+ HEX_CHARS[block & 0x0f] +
346
+ HEX_CHARS[(block >> 12) & 0x0f] +
347
+ HEX_CHARS[(block >> 8) & 0x0f] +
348
+ HEX_CHARS[(block >> 20) & 0x0f] +
349
+ HEX_CHARS[(block >> 16) & 0x0f] +
350
+ HEX_CHARS[(block >> 28) & 0x0f] +
351
+ HEX_CHARS[(block >> 24) & 0x0f];
352
+ }
353
+ if (j % blockCount === 0) {
354
+ s = cloneArray(s);
355
+ f(s);
356
+ i = 0;
357
+ }
358
+ }
359
+ if (extraBytes) {
360
+ block = s[i];
361
+ hex += HEX_CHARS[(block >> 4) & 0x0f] + HEX_CHARS[block & 0x0f];
362
+ if (extraBytes > 1) {
363
+ hex += HEX_CHARS[(block >> 12) & 0x0f] + HEX_CHARS[(block >> 8) & 0x0f];
364
+ }
365
+ if (extraBytes > 2) {
366
+ hex += HEX_CHARS[(block >> 20) & 0x0f] + HEX_CHARS[(block >> 16) & 0x0f];
367
+ }
368
+ }
369
+ return hex;
370
+ };
371
+ Keccak.prototype.arrayBuffer = function () {
372
+ this.finalize();
373
+ var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i = 0, j = 0;
374
+ var bytes = this.outputBits >> 3;
375
+ var buffer;
376
+ if (extraBytes) {
377
+ buffer = new ArrayBuffer((outputBlocks + 1) << 2);
378
+ }
379
+ else {
380
+ buffer = new ArrayBuffer(bytes);
381
+ }
382
+ var array = new Uint32Array(buffer);
383
+ while (j < outputBlocks) {
384
+ for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
385
+ array[j] = s[i];
386
+ }
387
+ if (j % blockCount === 0) {
388
+ s = cloneArray(s);
389
+ f(s);
390
+ }
391
+ }
392
+ if (extraBytes) {
393
+ array[j] = s[i];
394
+ buffer = buffer.slice(0, bytes);
395
+ }
396
+ return buffer;
397
+ };
398
+ Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;
399
+ Keccak.prototype.digest = Keccak.prototype.array = function () {
400
+ this.finalize();
401
+ var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks, extraBytes = this.extraBytes, i = 0, j = 0;
402
+ var array = [], offset, block;
403
+ while (j < outputBlocks) {
404
+ for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {
405
+ offset = j << 2;
406
+ block = s[i];
407
+ array[offset] = block & 0xff;
408
+ array[offset + 1] = (block >> 8) & 0xff;
409
+ array[offset + 2] = (block >> 16) & 0xff;
410
+ array[offset + 3] = (block >> 24) & 0xff;
411
+ }
412
+ if (j % blockCount === 0) {
413
+ s = cloneArray(s);
414
+ f(s);
415
+ }
416
+ }
417
+ if (extraBytes) {
418
+ offset = j << 2;
419
+ block = s[i];
420
+ array[offset] = block & 0xff;
421
+ if (extraBytes > 1) {
422
+ array[offset + 1] = (block >> 8) & 0xff;
423
+ }
424
+ if (extraBytes > 2) {
425
+ array[offset + 2] = (block >> 16) & 0xff;
426
+ }
427
+ }
428
+ return array;
429
+ };
430
+ function Kmac(bits, padding, outputBits) {
431
+ Keccak.call(this, bits, padding, outputBits);
432
+ }
433
+ Kmac.prototype = new Keccak();
434
+ Kmac.prototype.finalize = function () {
435
+ this.encode(this.outputBits, true);
436
+ return Keccak.prototype.finalize.call(this);
437
+ };
438
+ var f = function (s) {
439
+ var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;
440
+ for (n = 0; n < 48; n += 2) {
441
+ c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];
442
+ c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];
443
+ c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];
444
+ c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];
445
+ c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];
446
+ c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];
447
+ c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];
448
+ c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];
449
+ c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];
450
+ c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];
451
+ h = c8 ^ ((c2 << 1) | (c3 >>> 31));
452
+ l = c9 ^ ((c3 << 1) | (c2 >>> 31));
453
+ s[0] ^= h;
454
+ s[1] ^= l;
455
+ s[10] ^= h;
456
+ s[11] ^= l;
457
+ s[20] ^= h;
458
+ s[21] ^= l;
459
+ s[30] ^= h;
460
+ s[31] ^= l;
461
+ s[40] ^= h;
462
+ s[41] ^= l;
463
+ h = c0 ^ ((c4 << 1) | (c5 >>> 31));
464
+ l = c1 ^ ((c5 << 1) | (c4 >>> 31));
465
+ s[2] ^= h;
466
+ s[3] ^= l;
467
+ s[12] ^= h;
468
+ s[13] ^= l;
469
+ s[22] ^= h;
470
+ s[23] ^= l;
471
+ s[32] ^= h;
472
+ s[33] ^= l;
473
+ s[42] ^= h;
474
+ s[43] ^= l;
475
+ h = c2 ^ ((c6 << 1) | (c7 >>> 31));
476
+ l = c3 ^ ((c7 << 1) | (c6 >>> 31));
477
+ s[4] ^= h;
478
+ s[5] ^= l;
479
+ s[14] ^= h;
480
+ s[15] ^= l;
481
+ s[24] ^= h;
482
+ s[25] ^= l;
483
+ s[34] ^= h;
484
+ s[35] ^= l;
485
+ s[44] ^= h;
486
+ s[45] ^= l;
487
+ h = c4 ^ ((c8 << 1) | (c9 >>> 31));
488
+ l = c5 ^ ((c9 << 1) | (c8 >>> 31));
489
+ s[6] ^= h;
490
+ s[7] ^= l;
491
+ s[16] ^= h;
492
+ s[17] ^= l;
493
+ s[26] ^= h;
494
+ s[27] ^= l;
495
+ s[36] ^= h;
496
+ s[37] ^= l;
497
+ s[46] ^= h;
498
+ s[47] ^= l;
499
+ h = c6 ^ ((c0 << 1) | (c1 >>> 31));
500
+ l = c7 ^ ((c1 << 1) | (c0 >>> 31));
501
+ s[8] ^= h;
502
+ s[9] ^= l;
503
+ s[18] ^= h;
504
+ s[19] ^= l;
505
+ s[28] ^= h;
506
+ s[29] ^= l;
507
+ s[38] ^= h;
508
+ s[39] ^= l;
509
+ s[48] ^= h;
510
+ s[49] ^= l;
511
+ b0 = s[0];
512
+ b1 = s[1];
513
+ b32 = (s[11] << 4) | (s[10] >>> 28);
514
+ b33 = (s[10] << 4) | (s[11] >>> 28);
515
+ b14 = (s[20] << 3) | (s[21] >>> 29);
516
+ b15 = (s[21] << 3) | (s[20] >>> 29);
517
+ b46 = (s[31] << 9) | (s[30] >>> 23);
518
+ b47 = (s[30] << 9) | (s[31] >>> 23);
519
+ b28 = (s[40] << 18) | (s[41] >>> 14);
520
+ b29 = (s[41] << 18) | (s[40] >>> 14);
521
+ b20 = (s[2] << 1) | (s[3] >>> 31);
522
+ b21 = (s[3] << 1) | (s[2] >>> 31);
523
+ b2 = (s[13] << 12) | (s[12] >>> 20);
524
+ b3 = (s[12] << 12) | (s[13] >>> 20);
525
+ b34 = (s[22] << 10) | (s[23] >>> 22);
526
+ b35 = (s[23] << 10) | (s[22] >>> 22);
527
+ b16 = (s[33] << 13) | (s[32] >>> 19);
528
+ b17 = (s[32] << 13) | (s[33] >>> 19);
529
+ b48 = (s[42] << 2) | (s[43] >>> 30);
530
+ b49 = (s[43] << 2) | (s[42] >>> 30);
531
+ b40 = (s[5] << 30) | (s[4] >>> 2);
532
+ b41 = (s[4] << 30) | (s[5] >>> 2);
533
+ b22 = (s[14] << 6) | (s[15] >>> 26);
534
+ b23 = (s[15] << 6) | (s[14] >>> 26);
535
+ b4 = (s[25] << 11) | (s[24] >>> 21);
536
+ b5 = (s[24] << 11) | (s[25] >>> 21);
537
+ b36 = (s[34] << 15) | (s[35] >>> 17);
538
+ b37 = (s[35] << 15) | (s[34] >>> 17);
539
+ b18 = (s[45] << 29) | (s[44] >>> 3);
540
+ b19 = (s[44] << 29) | (s[45] >>> 3);
541
+ b10 = (s[6] << 28) | (s[7] >>> 4);
542
+ b11 = (s[7] << 28) | (s[6] >>> 4);
543
+ b42 = (s[17] << 23) | (s[16] >>> 9);
544
+ b43 = (s[16] << 23) | (s[17] >>> 9);
545
+ b24 = (s[26] << 25) | (s[27] >>> 7);
546
+ b25 = (s[27] << 25) | (s[26] >>> 7);
547
+ b6 = (s[36] << 21) | (s[37] >>> 11);
548
+ b7 = (s[37] << 21) | (s[36] >>> 11);
549
+ b38 = (s[47] << 24) | (s[46] >>> 8);
550
+ b39 = (s[46] << 24) | (s[47] >>> 8);
551
+ b30 = (s[8] << 27) | (s[9] >>> 5);
552
+ b31 = (s[9] << 27) | (s[8] >>> 5);
553
+ b12 = (s[18] << 20) | (s[19] >>> 12);
554
+ b13 = (s[19] << 20) | (s[18] >>> 12);
555
+ b44 = (s[29] << 7) | (s[28] >>> 25);
556
+ b45 = (s[28] << 7) | (s[29] >>> 25);
557
+ b26 = (s[38] << 8) | (s[39] >>> 24);
558
+ b27 = (s[39] << 8) | (s[38] >>> 24);
559
+ b8 = (s[48] << 14) | (s[49] >>> 18);
560
+ b9 = (s[49] << 14) | (s[48] >>> 18);
561
+ s[0] = b0 ^ (~b2 & b4);
562
+ s[1] = b1 ^ (~b3 & b5);
563
+ s[10] = b10 ^ (~b12 & b14);
564
+ s[11] = b11 ^ (~b13 & b15);
565
+ s[20] = b20 ^ (~b22 & b24);
566
+ s[21] = b21 ^ (~b23 & b25);
567
+ s[30] = b30 ^ (~b32 & b34);
568
+ s[31] = b31 ^ (~b33 & b35);
569
+ s[40] = b40 ^ (~b42 & b44);
570
+ s[41] = b41 ^ (~b43 & b45);
571
+ s[2] = b2 ^ (~b4 & b6);
572
+ s[3] = b3 ^ (~b5 & b7);
573
+ s[12] = b12 ^ (~b14 & b16);
574
+ s[13] = b13 ^ (~b15 & b17);
575
+ s[22] = b22 ^ (~b24 & b26);
576
+ s[23] = b23 ^ (~b25 & b27);
577
+ s[32] = b32 ^ (~b34 & b36);
578
+ s[33] = b33 ^ (~b35 & b37);
579
+ s[42] = b42 ^ (~b44 & b46);
580
+ s[43] = b43 ^ (~b45 & b47);
581
+ s[4] = b4 ^ (~b6 & b8);
582
+ s[5] = b5 ^ (~b7 & b9);
583
+ s[14] = b14 ^ (~b16 & b18);
584
+ s[15] = b15 ^ (~b17 & b19);
585
+ s[24] = b24 ^ (~b26 & b28);
586
+ s[25] = b25 ^ (~b27 & b29);
587
+ s[34] = b34 ^ (~b36 & b38);
588
+ s[35] = b35 ^ (~b37 & b39);
589
+ s[44] = b44 ^ (~b46 & b48);
590
+ s[45] = b45 ^ (~b47 & b49);
591
+ s[6] = b6 ^ (~b8 & b0);
592
+ s[7] = b7 ^ (~b9 & b1);
593
+ s[16] = b16 ^ (~b18 & b10);
594
+ s[17] = b17 ^ (~b19 & b11);
595
+ s[26] = b26 ^ (~b28 & b20);
596
+ s[27] = b27 ^ (~b29 & b21);
597
+ s[36] = b36 ^ (~b38 & b30);
598
+ s[37] = b37 ^ (~b39 & b31);
599
+ s[46] = b46 ^ (~b48 & b40);
600
+ s[47] = b47 ^ (~b49 & b41);
601
+ s[8] = b8 ^ (~b0 & b2);
602
+ s[9] = b9 ^ (~b1 & b3);
603
+ s[18] = b18 ^ (~b10 & b12);
604
+ s[19] = b19 ^ (~b11 & b13);
605
+ s[28] = b28 ^ (~b20 & b22);
606
+ s[29] = b29 ^ (~b21 & b23);
607
+ s[38] = b38 ^ (~b30 & b32);
608
+ s[39] = b39 ^ (~b31 & b33);
609
+ s[48] = b48 ^ (~b40 & b42);
610
+ s[49] = b49 ^ (~b41 & b43);
611
+ s[0] ^= RC[n];
612
+ s[1] ^= RC[n + 1];
613
+ }
614
+ };
615
+ /* 以下是内部实现需要的es模块化导出方法 */
616
+ const sha3_512 = methods["sha3_512"];
617
+ const sha3_384 = methods["sha3_384"];
618
+ const sha3_256 = methods["sha3_256"];
619
+ const sha3_224 = methods["sha3_224"];
620
+
621
+ exports.sha3_224 = sha3_224;
622
+ exports.sha3_256 = sha3_256;
623
+ exports.sha3_384 = sha3_384;
624
+ exports.sha3_512 = sha3_512;
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var sha512$1 = require('./sha512.cjs');
4
+
5
+ /**
6
+ * sha256 加密
7
+ * @param {String} str 字符串
8
+ * @returns {String} 返回加密后的字符串
9
+ */
10
+ function sha512(str) {
11
+ return sha512$1.sha512(str);
12
+ }
13
+ /**
14
+ * sha384 加密
15
+ * @param {String} str 字符串
16
+ * @returns {String} 返回加密后的字符串
17
+ */
18
+ function sha384(str) {
19
+ return sha512$1.sha384(str);
20
+ }
21
+ /**
22
+ * sha512_256 加密
23
+ * @param {String} str 字符串
24
+ * @returns {String} 返回加密后的字符串
25
+ */
26
+ function sha512_256(str) {
27
+ return sha512$1.sha512_256(str);
28
+ }
29
+ /**
30
+ * sha512_224 加密
31
+ * @param {String} str 字符串
32
+ * @returns {String} 返回加密后的字符串
33
+ */
34
+ function sha512_224(str) {
35
+ return sha512$1.sha512_224(str);
36
+ }
37
+ /**
38
+ * sha512_hmac 加密
39
+ * @param {String} str 字符串
40
+ * @param {String} key 秘钥
41
+ * @returns {String} 返回加密后的字符串
42
+ */
43
+ function sha512_hmac(str, key) {
44
+ return sha512$1.sha512_hmac(key, str);
45
+ }
46
+ /**
47
+ * sha384_hmac 加密
48
+ * @param {String} str 字符串
49
+ * @param {String} key 秘钥
50
+ * @returns {String} 返回加密后的字符串
51
+ */
52
+ function sha384_hmac(str, key) {
53
+ return sha512$1.sha384_hmac(key, str);
54
+ }
55
+ /**
56
+ * sha512_256_hmac 加密
57
+ * @param {String} str 字符串
58
+ * @param {String} key 秘钥
59
+ * @returns {String} 返回加密后的字符串
60
+ */
61
+ function sha512_256_hmac(str, key) {
62
+ return sha512$1.sha512_256_hmac(key, str);
63
+ }
64
+ /**
65
+ * sha512_224_hmac 加密
66
+ * @param {String} str 字符串
67
+ * @param {String} key 秘钥
68
+ * @returns {String} 返回加密后的字符串
69
+ */
70
+ function sha512_224_hmac(str, key) {
71
+ return sha512$1.sha512_224_hmac(key, str);
72
+ }
73
+
74
+ exports.sha384 = sha384;
75
+ exports.sha384_hmac = sha384_hmac;
76
+ exports.sha512 = sha512;
77
+ exports.sha512_224 = sha512_224;
78
+ exports.sha512_224_hmac = sha512_224_hmac;
79
+ exports.sha512_256 = sha512_256;
80
+ exports.sha512_256_hmac = sha512_256_hmac;
81
+ exports.sha512_hmac = sha512_hmac;