@ivujs/i-utils 1.1.1

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 (132) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +149 -0
  3. package/dist/cjs/ID-card/index.cjs +122 -0
  4. package/dist/cjs/array/index.cjs +465 -0
  5. package/dist/cjs/clipboard/index.cjs +135 -0
  6. package/dist/cjs/color/index.cjs +210 -0
  7. package/dist/cjs/constants/date.cjs +186 -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 +57 -0
  11. package/dist/cjs/constants/sort.cjs +15 -0
  12. package/dist/cjs/cookie/index.cjs +71 -0
  13. package/dist/cjs/crypto/aes/aes.cjs +533 -0
  14. package/dist/cjs/crypto/aes/index.cjs +28 -0
  15. package/dist/cjs/crypto/base32/base32.cjs +385 -0
  16. package/dist/cjs/crypto/base32/index.cjs +44 -0
  17. package/dist/cjs/crypto/base64/base64.cjs +433 -0
  18. package/dist/cjs/crypto/base64/index.cjs +64 -0
  19. package/dist/cjs/crypto/des/des.cjs +1054 -0
  20. package/dist/cjs/crypto/des/index.cjs +30 -0
  21. package/dist/cjs/crypto/md5/index.cjs +25 -0
  22. package/dist/cjs/crypto/md5/md5.cjs +944 -0
  23. package/dist/cjs/crypto/sha/sha1/index.cjs +25 -0
  24. package/dist/cjs/crypto/sha/sha1/sha1.cjs +602 -0
  25. package/dist/cjs/crypto/sha/sha256/index.cjs +46 -0
  26. package/dist/cjs/crypto/sha/sha256/sha256.cjs +654 -0
  27. package/dist/cjs/crypto/sha/sha3/index.cjs +44 -0
  28. package/dist/cjs/crypto/sha/sha3/sha3.cjs +747 -0
  29. package/dist/cjs/crypto/sha/sha512/index.cjs +88 -0
  30. package/dist/cjs/crypto/sha/sha512/sha512.cjs +1186 -0
  31. package/dist/cjs/crypto/sm/lib/asn1.cjs +167 -0
  32. package/dist/cjs/crypto/sm/lib/ec.cjs +352 -0
  33. package/dist/cjs/crypto/sm/lib/jsbn.cjs +1633 -0
  34. package/dist/cjs/crypto/sm/lib/sm3.cjs +173 -0
  35. package/dist/cjs/crypto/sm/lib/utils.cjs +198 -0
  36. package/dist/cjs/crypto/sm/sm2/index.cjs +122 -0
  37. package/dist/cjs/crypto/sm/sm2/sm2.cjs +269 -0
  38. package/dist/cjs/crypto/sm/sm3/index.cjs +15 -0
  39. package/dist/cjs/crypto/sm/sm3/sm3.cjs +103 -0
  40. package/dist/cjs/crypto/sm/sm4/index.cjs +28 -0
  41. package/dist/cjs/crypto/sm/sm4/sm4.cjs +362 -0
  42. package/dist/cjs/crypto/tea/index.cjs +26 -0
  43. package/dist/cjs/crypto/tea/tea.cjs +215 -0
  44. package/dist/cjs/date/index.cjs +1349 -0
  45. package/dist/cjs/desensitized/index.cjs +74 -0
  46. package/dist/cjs/device/index.cjs +159 -0
  47. package/dist/cjs/dom/index.cjs +176 -0
  48. package/dist/cjs/file/index.cjs +339 -0
  49. package/dist/cjs/function/index.cjs +67 -0
  50. package/dist/cjs/id/index.cjs +46 -0
  51. package/dist/cjs/index.cjs +399 -0
  52. package/dist/cjs/keycode/index.cjs +142 -0
  53. package/dist/cjs/math/index.cjs +284 -0
  54. package/dist/cjs/number/index.cjs +14 -0
  55. package/dist/cjs/object/index.cjs +216 -0
  56. package/dist/cjs/pagination/index.cjs +140 -0
  57. package/dist/cjs/random/index.cjs +25 -0
  58. package/dist/cjs/regexp/index.cjs +109 -0
  59. package/dist/cjs/storage/index.cjs +11 -0
  60. package/dist/cjs/storage/localStorage.cjs +40 -0
  61. package/dist/cjs/storage/sessionStorage.cjs +40 -0
  62. package/dist/cjs/string/index.cjs +338 -0
  63. package/dist/cjs/url/index.cjs +279 -0
  64. package/dist/cjs/validate/index.cjs +487 -0
  65. package/dist/cjs/weapp/index.cjs +151 -0
  66. package/dist/es/ID-card/index.mjs +116 -0
  67. package/dist/es/array/index.mjs +437 -0
  68. package/dist/es/clipboard/index.mjs +129 -0
  69. package/dist/es/color/index.mjs +200 -0
  70. package/dist/es/constants/date.mjs +184 -0
  71. package/dist/es/constants/lang.mjs +11 -0
  72. package/dist/es/constants/math.mjs +11 -0
  73. package/dist/es/constants/regexp.mjs +55 -0
  74. package/dist/es/constants/sort.mjs +13 -0
  75. package/dist/es/cookie/index.mjs +65 -0
  76. package/dist/es/crypto/aes/aes.mjs +529 -0
  77. package/dist/es/crypto/aes/index.mjs +25 -0
  78. package/dist/es/crypto/base32/base32.mjs +381 -0
  79. package/dist/es/crypto/base32/index.mjs +39 -0
  80. package/dist/es/crypto/base64/base64.mjs +427 -0
  81. package/dist/es/crypto/base64/index.mjs +57 -0
  82. package/dist/es/crypto/des/des.mjs +1050 -0
  83. package/dist/es/crypto/des/index.mjs +27 -0
  84. package/dist/es/crypto/md5/index.mjs +22 -0
  85. package/dist/es/crypto/md5/md5.mjs +941 -0
  86. package/dist/es/crypto/sha/sha1/index.mjs +22 -0
  87. package/dist/es/crypto/sha/sha1/sha1.mjs +599 -0
  88. package/dist/es/crypto/sha/sha256/index.mjs +41 -0
  89. package/dist/es/crypto/sha/sha256/sha256.mjs +649 -0
  90. package/dist/es/crypto/sha/sha3/index.mjs +39 -0
  91. package/dist/es/crypto/sha/sha3/sha3.mjs +742 -0
  92. package/dist/es/crypto/sha/sha512/index.mjs +79 -0
  93. package/dist/es/crypto/sha/sha512/sha512.mjs +1177 -0
  94. package/dist/es/crypto/sm/lib/asn1.mjs +164 -0
  95. package/dist/es/crypto/sm/lib/ec.mjs +349 -0
  96. package/dist/es/crypto/sm/lib/jsbn.mjs +1630 -0
  97. package/dist/es/crypto/sm/lib/sm3.mjs +170 -0
  98. package/dist/es/crypto/sm/lib/utils.mjs +186 -0
  99. package/dist/es/crypto/sm/sm2/index.mjs +111 -0
  100. package/dist/es/crypto/sm/sm2/sm2.mjs +258 -0
  101. package/dist/es/crypto/sm/sm3/index.mjs +13 -0
  102. package/dist/es/crypto/sm/sm3/sm3.mjs +99 -0
  103. package/dist/es/crypto/sm/sm4/index.mjs +25 -0
  104. package/dist/es/crypto/sm/sm4/sm4.mjs +359 -0
  105. package/dist/es/crypto/tea/index.mjs +23 -0
  106. package/dist/es/crypto/tea/tea.mjs +211 -0
  107. package/dist/es/date/index.mjs +1262 -0
  108. package/dist/es/desensitized/index.mjs +69 -0
  109. package/dist/es/device/index.mjs +145 -0
  110. package/dist/es/dom/index.mjs +164 -0
  111. package/dist/es/file/index.mjs +323 -0
  112. package/dist/es/function/index.mjs +63 -0
  113. package/dist/es/id/index.mjs +43 -0
  114. package/dist/es/index.mjs +59 -0
  115. package/dist/es/keycode/index.mjs +139 -0
  116. package/dist/es/math/index.mjs +274 -0
  117. package/dist/es/number/index.mjs +12 -0
  118. package/dist/es/object/index.mjs +203 -0
  119. package/dist/es/pagination/index.mjs +134 -0
  120. package/dist/es/random/index.mjs +22 -0
  121. package/dist/es/regexp/index.mjs +98 -0
  122. package/dist/es/storage/index.mjs +9 -0
  123. package/dist/es/storage/localStorage.mjs +35 -0
  124. package/dist/es/storage/sessionStorage.mjs +35 -0
  125. package/dist/es/string/index.mjs +321 -0
  126. package/dist/es/url/index.mjs +261 -0
  127. package/dist/es/validate/index.mjs +451 -0
  128. package/dist/es/weapp/index.mjs +140 -0
  129. package/dist/lib/index.full.esm.js +15825 -0
  130. package/dist/lib/index.full.esm.min.js +58 -0
  131. package/dist/lib/index.full.umd.js +16179 -0
  132. package/package.json +54 -0
@@ -0,0 +1,649 @@
1
+ /**
2
+ * [js-sha256]{@link https://github.com/emn178/js-sha256}
3
+ *
4
+ * @version 0.11.0
5
+ * @author Chen, Yi-Cyuan [emn178@gmail.com]
6
+ * @copyright Chen, Yi-Cyuan 2014-2024
7
+ * @license MIT
8
+ */
9
+ /* jslint bitwise: true */
10
+
11
+ var ERROR = "input is invalid type";
12
+ var WINDOW = typeof window === "object";
13
+ var root = WINDOW ? window : {};
14
+ if (root.JS_SHA256_NO_WINDOW) {
15
+ WINDOW = false;
16
+ }
17
+ var WEB_WORKER = !WINDOW && typeof self === "object";
18
+ var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
19
+ if (NODE_JS) {
20
+ root = global;
21
+ } else if (WEB_WORKER) {
22
+ root = self;
23
+ }
24
+ var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";
25
+ var HEX_CHARS = "0123456789abcdef".split("");
26
+ var EXTRA = [-2147483648, 8388608, 32768, 128];
27
+ var SHIFT = [24, 16, 8, 0];
28
+ var K = [
29
+ 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98,
30
+ 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
31
+ 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8,
32
+ 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
33
+ 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,
34
+ 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
35
+ 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7,
36
+ 0xc67178f2,
37
+ ];
38
+ var OUTPUT_TYPES = ["hex", "array", "digest", "arrayBuffer"];
39
+
40
+ var blocks = [];
41
+
42
+ if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {
43
+ Array.isArray = function (obj) {
44
+ return Object.prototype.toString.call(obj) === "[object Array]";
45
+ };
46
+ }
47
+
48
+ if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {
49
+ ArrayBuffer.isView = function (obj) {
50
+ return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
51
+ };
52
+ }
53
+
54
+ var createOutputMethod = function (outputType, is224) {
55
+ return function (message) {
56
+ return new Sha256(is224, true).update(message)[outputType]();
57
+ };
58
+ };
59
+
60
+ var createMethod = function (is224) {
61
+ var method = createOutputMethod("hex", is224);
62
+ if (NODE_JS) {
63
+ method = nodeWrap(method, is224);
64
+ }
65
+ method.create = function () {
66
+ return new Sha256(is224);
67
+ };
68
+ method.update = function (message) {
69
+ return method.create().update(message);
70
+ };
71
+ for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
72
+ var type = OUTPUT_TYPES[i];
73
+ method[type] = createOutputMethod(type, is224);
74
+ }
75
+ return method;
76
+ };
77
+
78
+ var nodeWrap = function (method, is224) {
79
+ var crypto = require("crypto");
80
+ var Buffer = require("buffer").Buffer;
81
+ var algorithm = is224 ? "sha224" : "sha256";
82
+ var bufferFrom;
83
+ if (Buffer.from && !root.JS_SHA256_NO_BUFFER_FROM) {
84
+ bufferFrom = Buffer.from;
85
+ } else {
86
+ bufferFrom = function (message) {
87
+ return new Buffer(message);
88
+ };
89
+ }
90
+ var nodeMethod = function (message) {
91
+ if (typeof message === "string") {
92
+ return crypto.createHash(algorithm).update(message, "utf8").digest("hex");
93
+ } else {
94
+ if (message === null || message === undefined) {
95
+ throw new Error(ERROR);
96
+ } else if (message.constructor === ArrayBuffer) {
97
+ message = new Uint8Array(message);
98
+ }
99
+ }
100
+ if (Array.isArray(message) || ArrayBuffer.isView(message) || message.constructor === Buffer) {
101
+ return crypto.createHash(algorithm).update(bufferFrom(message)).digest("hex");
102
+ } else {
103
+ return method(message);
104
+ }
105
+ };
106
+ return nodeMethod;
107
+ };
108
+
109
+ var createHmacOutputMethod = function (outputType, is224) {
110
+ return function (key, message) {
111
+ return new HmacSha256(key, is224, true).update(message)[outputType]();
112
+ };
113
+ };
114
+
115
+ var createHmacMethod = function (is224) {
116
+ var method = createHmacOutputMethod("hex", is224);
117
+ method.create = function (key) {
118
+ return new HmacSha256(key, is224);
119
+ };
120
+ method.update = function (key, message) {
121
+ return method.create(key).update(message);
122
+ };
123
+ for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
124
+ var type = OUTPUT_TYPES[i];
125
+ method[type] = createHmacOutputMethod(type, is224);
126
+ }
127
+ return method;
128
+ };
129
+
130
+ function Sha256(is224, sharedMemory) {
131
+ if (sharedMemory) {
132
+ blocks[0] =
133
+ blocks[16] =
134
+ blocks[1] =
135
+ blocks[2] =
136
+ blocks[3] =
137
+ blocks[4] =
138
+ blocks[5] =
139
+ blocks[6] =
140
+ blocks[7] =
141
+ blocks[8] =
142
+ blocks[9] =
143
+ blocks[10] =
144
+ blocks[11] =
145
+ blocks[12] =
146
+ blocks[13] =
147
+ blocks[14] =
148
+ blocks[15] =
149
+ 0;
150
+ this.blocks = blocks;
151
+ } else {
152
+ this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
153
+ }
154
+
155
+ if (is224) {
156
+ this.h0 = 0xc1059ed8;
157
+ this.h1 = 0x367cd507;
158
+ this.h2 = 0x3070dd17;
159
+ this.h3 = 0xf70e5939;
160
+ this.h4 = 0xffc00b31;
161
+ this.h5 = 0x68581511;
162
+ this.h6 = 0x64f98fa7;
163
+ this.h7 = 0xbefa4fa4;
164
+ } else {
165
+ // 256
166
+ this.h0 = 0x6a09e667;
167
+ this.h1 = 0xbb67ae85;
168
+ this.h2 = 0x3c6ef372;
169
+ this.h3 = 0xa54ff53a;
170
+ this.h4 = 0x510e527f;
171
+ this.h5 = 0x9b05688c;
172
+ this.h6 = 0x1f83d9ab;
173
+ this.h7 = 0x5be0cd19;
174
+ }
175
+
176
+ this.block = this.start = this.bytes = this.hBytes = 0;
177
+ this.finalized = this.hashed = false;
178
+ this.first = true;
179
+ this.is224 = is224;
180
+ }
181
+
182
+ Sha256.prototype.update = function (message) {
183
+ if (this.finalized) {
184
+ return;
185
+ }
186
+ var notString,
187
+ type = typeof message;
188
+ if (type !== "string") {
189
+ if (type === "object") {
190
+ if (message === null) {
191
+ throw new Error(ERROR);
192
+ } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
193
+ message = new Uint8Array(message);
194
+ } else if (!Array.isArray(message)) {
195
+ if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {
196
+ throw new Error(ERROR);
197
+ }
198
+ }
199
+ } else {
200
+ throw new Error(ERROR);
201
+ }
202
+ notString = true;
203
+ }
204
+ var code,
205
+ index = 0,
206
+ i,
207
+ length = message.length,
208
+ blocks = this.blocks;
209
+ while (index < length) {
210
+ if (this.hashed) {
211
+ this.hashed = false;
212
+ blocks[0] = this.block;
213
+ this.block =
214
+ blocks[16] =
215
+ blocks[1] =
216
+ blocks[2] =
217
+ blocks[3] =
218
+ blocks[4] =
219
+ blocks[5] =
220
+ blocks[6] =
221
+ blocks[7] =
222
+ blocks[8] =
223
+ blocks[9] =
224
+ blocks[10] =
225
+ blocks[11] =
226
+ blocks[12] =
227
+ blocks[13] =
228
+ blocks[14] =
229
+ blocks[15] =
230
+ 0;
231
+ }
232
+
233
+ if (notString) {
234
+ for (i = this.start; index < length && i < 64; ++index) {
235
+ blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];
236
+ }
237
+ } else {
238
+ for (i = this.start; index < length && i < 64; ++index) {
239
+ code = message.charCodeAt(index);
240
+ if (code < 0x80) {
241
+ blocks[i >>> 2] |= code << SHIFT[i++ & 3];
242
+ } else if (code < 0x800) {
243
+ blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];
244
+ blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
245
+ } else if (code < 0xd800 || code >= 0xe000) {
246
+ blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];
247
+ blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];
248
+ blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
249
+ } else {
250
+ code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
251
+ blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];
252
+ blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];
253
+ blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];
254
+ blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
255
+ }
256
+ }
257
+ }
258
+
259
+ this.lastByteIndex = i;
260
+ this.bytes += i - this.start;
261
+ if (i >= 64) {
262
+ this.block = blocks[16];
263
+ this.start = i - 64;
264
+ this.hash();
265
+ this.hashed = true;
266
+ } else {
267
+ this.start = i;
268
+ }
269
+ }
270
+ if (this.bytes > 4294967295) {
271
+ this.hBytes += (this.bytes / 4294967296) << 0;
272
+ this.bytes = this.bytes % 4294967296;
273
+ }
274
+ return this;
275
+ };
276
+
277
+ Sha256.prototype.finalize = function () {
278
+ if (this.finalized) {
279
+ return;
280
+ }
281
+ this.finalized = true;
282
+ var blocks = this.blocks,
283
+ i = this.lastByteIndex;
284
+ blocks[16] = this.block;
285
+ blocks[i >>> 2] |= EXTRA[i & 3];
286
+ this.block = blocks[16];
287
+ if (i >= 56) {
288
+ if (!this.hashed) {
289
+ this.hash();
290
+ }
291
+ blocks[0] = this.block;
292
+ blocks[16] =
293
+ blocks[1] =
294
+ blocks[2] =
295
+ blocks[3] =
296
+ blocks[4] =
297
+ blocks[5] =
298
+ blocks[6] =
299
+ blocks[7] =
300
+ blocks[8] =
301
+ blocks[9] =
302
+ blocks[10] =
303
+ blocks[11] =
304
+ blocks[12] =
305
+ blocks[13] =
306
+ blocks[14] =
307
+ blocks[15] =
308
+ 0;
309
+ }
310
+ blocks[14] = (this.hBytes << 3) | (this.bytes >>> 29);
311
+ blocks[15] = this.bytes << 3;
312
+ this.hash();
313
+ };
314
+
315
+ Sha256.prototype.hash = function () {
316
+ var a = this.h0,
317
+ b = this.h1,
318
+ c = this.h2,
319
+ d = this.h3,
320
+ e = this.h4,
321
+ f = this.h5,
322
+ g = this.h6,
323
+ h = this.h7,
324
+ blocks = this.blocks,
325
+ j,
326
+ s0,
327
+ s1,
328
+ maj,
329
+ t1,
330
+ t2,
331
+ ch,
332
+ ab,
333
+ da,
334
+ cd,
335
+ bc;
336
+
337
+ for (j = 16; j < 64; ++j) {
338
+ // rightrotate
339
+ t1 = blocks[j - 15];
340
+ s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);
341
+ t1 = blocks[j - 2];
342
+ s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);
343
+ blocks[j] = (blocks[j - 16] + s0 + blocks[j - 7] + s1) << 0;
344
+ }
345
+
346
+ bc = b & c;
347
+ for (j = 0; j < 64; j += 4) {
348
+ if (this.first) {
349
+ if (this.is224) {
350
+ ab = 300032;
351
+ t1 = blocks[0] - 1413257819;
352
+ h = (t1 - 150054599) << 0;
353
+ d = (t1 + 24177077) << 0;
354
+ } else {
355
+ ab = 704751109;
356
+ t1 = blocks[0] - 210244248;
357
+ h = (t1 - 1521486534) << 0;
358
+ d = (t1 + 143694565) << 0;
359
+ }
360
+ this.first = false;
361
+ } else {
362
+ s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));
363
+ s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));
364
+ ab = a & b;
365
+ maj = ab ^ (a & c) ^ bc;
366
+ ch = (e & f) ^ (~e & g);
367
+ t1 = h + s1 + ch + K[j] + blocks[j];
368
+ t2 = s0 + maj;
369
+ h = (d + t1) << 0;
370
+ d = (t1 + t2) << 0;
371
+ }
372
+ s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));
373
+ s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));
374
+ da = d & a;
375
+ maj = da ^ (d & b) ^ ab;
376
+ ch = (h & e) ^ (~h & f);
377
+ t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];
378
+ t2 = s0 + maj;
379
+ g = (c + t1) << 0;
380
+ c = (t1 + t2) << 0;
381
+ s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));
382
+ s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));
383
+ cd = c & d;
384
+ maj = cd ^ (c & a) ^ da;
385
+ ch = (g & h) ^ (~g & e);
386
+ t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];
387
+ t2 = s0 + maj;
388
+ f = (b + t1) << 0;
389
+ b = (t1 + t2) << 0;
390
+ s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));
391
+ s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));
392
+ bc = b & c;
393
+ maj = bc ^ (b & d) ^ cd;
394
+ ch = (f & g) ^ (~f & h);
395
+ t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];
396
+ t2 = s0 + maj;
397
+ e = (a + t1) << 0;
398
+ a = (t1 + t2) << 0;
399
+ this.chromeBugWorkAround = true;
400
+ }
401
+
402
+ this.h0 = (this.h0 + a) << 0;
403
+ this.h1 = (this.h1 + b) << 0;
404
+ this.h2 = (this.h2 + c) << 0;
405
+ this.h3 = (this.h3 + d) << 0;
406
+ this.h4 = (this.h4 + e) << 0;
407
+ this.h5 = (this.h5 + f) << 0;
408
+ this.h6 = (this.h6 + g) << 0;
409
+ this.h7 = (this.h7 + h) << 0;
410
+ };
411
+
412
+ Sha256.prototype.hex = function () {
413
+ this.finalize();
414
+
415
+ var h0 = this.h0,
416
+ h1 = this.h1,
417
+ h2 = this.h2,
418
+ h3 = this.h3,
419
+ h4 = this.h4,
420
+ h5 = this.h5,
421
+ h6 = this.h6,
422
+ h7 = this.h7;
423
+
424
+ var hex =
425
+ HEX_CHARS[(h0 >>> 28) & 0x0f] +
426
+ HEX_CHARS[(h0 >>> 24) & 0x0f] +
427
+ HEX_CHARS[(h0 >>> 20) & 0x0f] +
428
+ HEX_CHARS[(h0 >>> 16) & 0x0f] +
429
+ HEX_CHARS[(h0 >>> 12) & 0x0f] +
430
+ HEX_CHARS[(h0 >>> 8) & 0x0f] +
431
+ HEX_CHARS[(h0 >>> 4) & 0x0f] +
432
+ HEX_CHARS[h0 & 0x0f] +
433
+ HEX_CHARS[(h1 >>> 28) & 0x0f] +
434
+ HEX_CHARS[(h1 >>> 24) & 0x0f] +
435
+ HEX_CHARS[(h1 >>> 20) & 0x0f] +
436
+ HEX_CHARS[(h1 >>> 16) & 0x0f] +
437
+ HEX_CHARS[(h1 >>> 12) & 0x0f] +
438
+ HEX_CHARS[(h1 >>> 8) & 0x0f] +
439
+ HEX_CHARS[(h1 >>> 4) & 0x0f] +
440
+ HEX_CHARS[h1 & 0x0f] +
441
+ HEX_CHARS[(h2 >>> 28) & 0x0f] +
442
+ HEX_CHARS[(h2 >>> 24) & 0x0f] +
443
+ HEX_CHARS[(h2 >>> 20) & 0x0f] +
444
+ HEX_CHARS[(h2 >>> 16) & 0x0f] +
445
+ HEX_CHARS[(h2 >>> 12) & 0x0f] +
446
+ HEX_CHARS[(h2 >>> 8) & 0x0f] +
447
+ HEX_CHARS[(h2 >>> 4) & 0x0f] +
448
+ HEX_CHARS[h2 & 0x0f] +
449
+ HEX_CHARS[(h3 >>> 28) & 0x0f] +
450
+ HEX_CHARS[(h3 >>> 24) & 0x0f] +
451
+ HEX_CHARS[(h3 >>> 20) & 0x0f] +
452
+ HEX_CHARS[(h3 >>> 16) & 0x0f] +
453
+ HEX_CHARS[(h3 >>> 12) & 0x0f] +
454
+ HEX_CHARS[(h3 >>> 8) & 0x0f] +
455
+ HEX_CHARS[(h3 >>> 4) & 0x0f] +
456
+ HEX_CHARS[h3 & 0x0f] +
457
+ HEX_CHARS[(h4 >>> 28) & 0x0f] +
458
+ HEX_CHARS[(h4 >>> 24) & 0x0f] +
459
+ HEX_CHARS[(h4 >>> 20) & 0x0f] +
460
+ HEX_CHARS[(h4 >>> 16) & 0x0f] +
461
+ HEX_CHARS[(h4 >>> 12) & 0x0f] +
462
+ HEX_CHARS[(h4 >>> 8) & 0x0f] +
463
+ HEX_CHARS[(h4 >>> 4) & 0x0f] +
464
+ HEX_CHARS[h4 & 0x0f] +
465
+ HEX_CHARS[(h5 >>> 28) & 0x0f] +
466
+ HEX_CHARS[(h5 >>> 24) & 0x0f] +
467
+ HEX_CHARS[(h5 >>> 20) & 0x0f] +
468
+ HEX_CHARS[(h5 >>> 16) & 0x0f] +
469
+ HEX_CHARS[(h5 >>> 12) & 0x0f] +
470
+ HEX_CHARS[(h5 >>> 8) & 0x0f] +
471
+ HEX_CHARS[(h5 >>> 4) & 0x0f] +
472
+ HEX_CHARS[h5 & 0x0f] +
473
+ HEX_CHARS[(h6 >>> 28) & 0x0f] +
474
+ HEX_CHARS[(h6 >>> 24) & 0x0f] +
475
+ HEX_CHARS[(h6 >>> 20) & 0x0f] +
476
+ HEX_CHARS[(h6 >>> 16) & 0x0f] +
477
+ HEX_CHARS[(h6 >>> 12) & 0x0f] +
478
+ HEX_CHARS[(h6 >>> 8) & 0x0f] +
479
+ HEX_CHARS[(h6 >>> 4) & 0x0f] +
480
+ HEX_CHARS[h6 & 0x0f];
481
+ if (!this.is224) {
482
+ hex +=
483
+ HEX_CHARS[(h7 >>> 28) & 0x0f] +
484
+ HEX_CHARS[(h7 >>> 24) & 0x0f] +
485
+ HEX_CHARS[(h7 >>> 20) & 0x0f] +
486
+ HEX_CHARS[(h7 >>> 16) & 0x0f] +
487
+ HEX_CHARS[(h7 >>> 12) & 0x0f] +
488
+ HEX_CHARS[(h7 >>> 8) & 0x0f] +
489
+ HEX_CHARS[(h7 >>> 4) & 0x0f] +
490
+ HEX_CHARS[h7 & 0x0f];
491
+ }
492
+ return hex;
493
+ };
494
+
495
+ Sha256.prototype.toString = Sha256.prototype.hex;
496
+
497
+ Sha256.prototype.digest = function () {
498
+ this.finalize();
499
+
500
+ var h0 = this.h0,
501
+ h1 = this.h1,
502
+ h2 = this.h2,
503
+ h3 = this.h3,
504
+ h4 = this.h4,
505
+ h5 = this.h5,
506
+ h6 = this.h6,
507
+ h7 = this.h7;
508
+
509
+ var arr = [
510
+ (h0 >>> 24) & 0xff,
511
+ (h0 >>> 16) & 0xff,
512
+ (h0 >>> 8) & 0xff,
513
+ h0 & 0xff,
514
+ (h1 >>> 24) & 0xff,
515
+ (h1 >>> 16) & 0xff,
516
+ (h1 >>> 8) & 0xff,
517
+ h1 & 0xff,
518
+ (h2 >>> 24) & 0xff,
519
+ (h2 >>> 16) & 0xff,
520
+ (h2 >>> 8) & 0xff,
521
+ h2 & 0xff,
522
+ (h3 >>> 24) & 0xff,
523
+ (h3 >>> 16) & 0xff,
524
+ (h3 >>> 8) & 0xff,
525
+ h3 & 0xff,
526
+ (h4 >>> 24) & 0xff,
527
+ (h4 >>> 16) & 0xff,
528
+ (h4 >>> 8) & 0xff,
529
+ h4 & 0xff,
530
+ (h5 >>> 24) & 0xff,
531
+ (h5 >>> 16) & 0xff,
532
+ (h5 >>> 8) & 0xff,
533
+ h5 & 0xff,
534
+ (h6 >>> 24) & 0xff,
535
+ (h6 >>> 16) & 0xff,
536
+ (h6 >>> 8) & 0xff,
537
+ h6 & 0xff,
538
+ ];
539
+ if (!this.is224) {
540
+ arr.push((h7 >>> 24) & 0xff, (h7 >>> 16) & 0xff, (h7 >>> 8) & 0xff, h7 & 0xff);
541
+ }
542
+ return arr;
543
+ };
544
+
545
+ Sha256.prototype.array = Sha256.prototype.digest;
546
+
547
+ Sha256.prototype.arrayBuffer = function () {
548
+ this.finalize();
549
+
550
+ var buffer = new ArrayBuffer(this.is224 ? 28 : 32);
551
+ var dataView = new DataView(buffer);
552
+ dataView.setUint32(0, this.h0);
553
+ dataView.setUint32(4, this.h1);
554
+ dataView.setUint32(8, this.h2);
555
+ dataView.setUint32(12, this.h3);
556
+ dataView.setUint32(16, this.h4);
557
+ dataView.setUint32(20, this.h5);
558
+ dataView.setUint32(24, this.h6);
559
+ if (!this.is224) {
560
+ dataView.setUint32(28, this.h7);
561
+ }
562
+ return buffer;
563
+ };
564
+
565
+ function HmacSha256(key, is224, sharedMemory) {
566
+ var i,
567
+ type = typeof key;
568
+ if (type === "string") {
569
+ var bytes = [],
570
+ length = key.length,
571
+ index = 0,
572
+ code;
573
+ for (i = 0; i < length; ++i) {
574
+ code = key.charCodeAt(i);
575
+ if (code < 0x80) {
576
+ bytes[index++] = code;
577
+ } else if (code < 0x800) {
578
+ bytes[index++] = 0xc0 | (code >>> 6);
579
+ bytes[index++] = 0x80 | (code & 0x3f);
580
+ } else if (code < 0xd800 || code >= 0xe000) {
581
+ bytes[index++] = 0xe0 | (code >>> 12);
582
+ bytes[index++] = 0x80 | ((code >>> 6) & 0x3f);
583
+ bytes[index++] = 0x80 | (code & 0x3f);
584
+ } else {
585
+ code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));
586
+ bytes[index++] = 0xf0 | (code >>> 18);
587
+ bytes[index++] = 0x80 | ((code >>> 12) & 0x3f);
588
+ bytes[index++] = 0x80 | ((code >>> 6) & 0x3f);
589
+ bytes[index++] = 0x80 | (code & 0x3f);
590
+ }
591
+ }
592
+ key = bytes;
593
+ } else {
594
+ if (type === "object") {
595
+ if (key === null) {
596
+ throw new Error(ERROR);
597
+ } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {
598
+ key = new Uint8Array(key);
599
+ } else if (!Array.isArray(key)) {
600
+ if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {
601
+ throw new Error(ERROR);
602
+ }
603
+ }
604
+ } else {
605
+ throw new Error(ERROR);
606
+ }
607
+ }
608
+
609
+ if (key.length > 64) {
610
+ key = new Sha256(is224, true).update(key).array();
611
+ }
612
+
613
+ var oKeyPad = [],
614
+ iKeyPad = [];
615
+ for (i = 0; i < 64; ++i) {
616
+ var b = key[i] || 0;
617
+ oKeyPad[i] = 0x5c ^ b;
618
+ iKeyPad[i] = 0x36 ^ b;
619
+ }
620
+
621
+ Sha256.call(this, is224, sharedMemory);
622
+
623
+ this.update(iKeyPad);
624
+ this.oKeyPad = oKeyPad;
625
+ this.inner = true;
626
+ this.sharedMemory = sharedMemory;
627
+ }
628
+
629
+ HmacSha256.prototype = new Sha256();
630
+
631
+ HmacSha256.prototype.finalize = function () {
632
+ Sha256.prototype.finalize.call(this);
633
+ if (this.inner) {
634
+ this.inner = false;
635
+ var innerHash = this.array();
636
+ Sha256.call(this, this.is224, this.sharedMemory);
637
+ this.update(this.oKeyPad);
638
+ this.update(innerHash);
639
+ Sha256.prototype.finalize.call(this);
640
+ }
641
+ };
642
+
643
+ /* 以下是内部实现需要的es模块化导出方法 */
644
+ const sha256 = createMethod();
645
+ const sha224 = createMethod(true);
646
+ const sha256_hmac = createHmacMethod();
647
+ const sha224_hmac = createHmacMethod(true);
648
+
649
+ export { sha224, sha224_hmac, sha256, sha256_hmac };
@@ -0,0 +1,39 @@
1
+ import { sha3_512 as sha3_512$1, sha3_384 as sha3_384$1, sha3_256 as sha3_256$1, sha3_224 as sha3_224$1 } from './sha3.mjs';
2
+
3
+ /**
4
+ * sha3_512 加密
5
+ * @param {String} str 字符串
6
+ * @returns {String} 返回加密后的字符串
7
+ */
8
+ function sha3_512(str) {
9
+ return sha3_512$1(str);
10
+ }
11
+
12
+ /**
13
+ * sha3_384 加密
14
+ * @param {String} str 字符串
15
+ * @returns {String} 返回加密后的字符串
16
+ */
17
+ function sha3_384(str) {
18
+ return sha3_384$1(str);
19
+ }
20
+
21
+ /**
22
+ * sha3_256 加密
23
+ * @param {String} str 字符串
24
+ * @returns {String} 返回加密后的字符串
25
+ */
26
+ function sha3_256(str) {
27
+ return sha3_256$1(str);
28
+ }
29
+
30
+ /**
31
+ * sha3_224 加密
32
+ * @param {String} str 字符串
33
+ * @returns {String} 返回加密后的字符串
34
+ */
35
+ function sha3_224(str) {
36
+ return sha3_224$1(str);
37
+ }
38
+
39
+ export { sha3_224, sha3_256, sha3_384, sha3_512 };