@ivujs/i-utils 1.1.1 → 1.1.3

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 (140) hide show
  1. package/README.md +17 -19
  2. package/dist/cjs/id/index.cjs +26 -43
  3. package/dist/cjs/index.cjs +8 -398
  4. package/dist/es/id/index.d.ts +16 -0
  5. package/dist/es/id/index.mjs +28 -42
  6. package/dist/es/index.d.ts +2 -0
  7. package/dist/es/index.mjs +8 -58
  8. package/dist/index.d.ts +21 -0
  9. package/dist/lib/index.full.cjs.js +38 -0
  10. package/dist/lib/index.full.cjs.min.js +2 -0
  11. package/dist/lib/index.full.cjs.min.js.map +1 -0
  12. package/dist/lib/index.full.esm.js +35 -15822
  13. package/dist/lib/index.full.esm.min.js +2 -58
  14. package/dist/lib/index.full.esm.min.js.map +1 -0
  15. package/dist/lib/index.full.umd.js +39 -16176
  16. package/dist/lib/index.full.umd.min.js +2 -0
  17. package/dist/lib/index.full.umd.min.js.map +1 -0
  18. package/package.json +84 -54
  19. package/dist/cjs/ID-card/index.cjs +0 -122
  20. package/dist/cjs/array/index.cjs +0 -465
  21. package/dist/cjs/clipboard/index.cjs +0 -135
  22. package/dist/cjs/color/index.cjs +0 -210
  23. package/dist/cjs/constants/date.cjs +0 -186
  24. package/dist/cjs/constants/lang.cjs +0 -13
  25. package/dist/cjs/constants/math.cjs +0 -13
  26. package/dist/cjs/constants/regexp.cjs +0 -57
  27. package/dist/cjs/constants/sort.cjs +0 -15
  28. package/dist/cjs/cookie/index.cjs +0 -71
  29. package/dist/cjs/crypto/aes/aes.cjs +0 -533
  30. package/dist/cjs/crypto/aes/index.cjs +0 -28
  31. package/dist/cjs/crypto/base32/base32.cjs +0 -385
  32. package/dist/cjs/crypto/base32/index.cjs +0 -44
  33. package/dist/cjs/crypto/base64/base64.cjs +0 -433
  34. package/dist/cjs/crypto/base64/index.cjs +0 -64
  35. package/dist/cjs/crypto/des/des.cjs +0 -1054
  36. package/dist/cjs/crypto/des/index.cjs +0 -30
  37. package/dist/cjs/crypto/md5/index.cjs +0 -25
  38. package/dist/cjs/crypto/md5/md5.cjs +0 -944
  39. package/dist/cjs/crypto/sha/sha1/index.cjs +0 -25
  40. package/dist/cjs/crypto/sha/sha1/sha1.cjs +0 -602
  41. package/dist/cjs/crypto/sha/sha256/index.cjs +0 -46
  42. package/dist/cjs/crypto/sha/sha256/sha256.cjs +0 -654
  43. package/dist/cjs/crypto/sha/sha3/index.cjs +0 -44
  44. package/dist/cjs/crypto/sha/sha3/sha3.cjs +0 -747
  45. package/dist/cjs/crypto/sha/sha512/index.cjs +0 -88
  46. package/dist/cjs/crypto/sha/sha512/sha512.cjs +0 -1186
  47. package/dist/cjs/crypto/sm/lib/asn1.cjs +0 -167
  48. package/dist/cjs/crypto/sm/lib/ec.cjs +0 -352
  49. package/dist/cjs/crypto/sm/lib/jsbn.cjs +0 -1633
  50. package/dist/cjs/crypto/sm/lib/sm3.cjs +0 -173
  51. package/dist/cjs/crypto/sm/lib/utils.cjs +0 -198
  52. package/dist/cjs/crypto/sm/sm2/index.cjs +0 -122
  53. package/dist/cjs/crypto/sm/sm2/sm2.cjs +0 -269
  54. package/dist/cjs/crypto/sm/sm3/index.cjs +0 -15
  55. package/dist/cjs/crypto/sm/sm3/sm3.cjs +0 -103
  56. package/dist/cjs/crypto/sm/sm4/index.cjs +0 -28
  57. package/dist/cjs/crypto/sm/sm4/sm4.cjs +0 -362
  58. package/dist/cjs/crypto/tea/index.cjs +0 -26
  59. package/dist/cjs/crypto/tea/tea.cjs +0 -215
  60. package/dist/cjs/date/index.cjs +0 -1349
  61. package/dist/cjs/desensitized/index.cjs +0 -74
  62. package/dist/cjs/device/index.cjs +0 -159
  63. package/dist/cjs/dom/index.cjs +0 -176
  64. package/dist/cjs/file/index.cjs +0 -339
  65. package/dist/cjs/function/index.cjs +0 -67
  66. package/dist/cjs/keycode/index.cjs +0 -142
  67. package/dist/cjs/math/index.cjs +0 -284
  68. package/dist/cjs/number/index.cjs +0 -14
  69. package/dist/cjs/object/index.cjs +0 -216
  70. package/dist/cjs/pagination/index.cjs +0 -140
  71. package/dist/cjs/random/index.cjs +0 -25
  72. package/dist/cjs/regexp/index.cjs +0 -109
  73. package/dist/cjs/storage/index.cjs +0 -11
  74. package/dist/cjs/storage/localStorage.cjs +0 -40
  75. package/dist/cjs/storage/sessionStorage.cjs +0 -40
  76. package/dist/cjs/string/index.cjs +0 -338
  77. package/dist/cjs/url/index.cjs +0 -279
  78. package/dist/cjs/validate/index.cjs +0 -487
  79. package/dist/cjs/weapp/index.cjs +0 -151
  80. package/dist/es/ID-card/index.mjs +0 -116
  81. package/dist/es/array/index.mjs +0 -437
  82. package/dist/es/clipboard/index.mjs +0 -129
  83. package/dist/es/color/index.mjs +0 -200
  84. package/dist/es/constants/date.mjs +0 -184
  85. package/dist/es/constants/lang.mjs +0 -11
  86. package/dist/es/constants/math.mjs +0 -11
  87. package/dist/es/constants/regexp.mjs +0 -55
  88. package/dist/es/constants/sort.mjs +0 -13
  89. package/dist/es/cookie/index.mjs +0 -65
  90. package/dist/es/crypto/aes/aes.mjs +0 -529
  91. package/dist/es/crypto/aes/index.mjs +0 -25
  92. package/dist/es/crypto/base32/base32.mjs +0 -381
  93. package/dist/es/crypto/base32/index.mjs +0 -39
  94. package/dist/es/crypto/base64/base64.mjs +0 -427
  95. package/dist/es/crypto/base64/index.mjs +0 -57
  96. package/dist/es/crypto/des/des.mjs +0 -1050
  97. package/dist/es/crypto/des/index.mjs +0 -27
  98. package/dist/es/crypto/md5/index.mjs +0 -22
  99. package/dist/es/crypto/md5/md5.mjs +0 -941
  100. package/dist/es/crypto/sha/sha1/index.mjs +0 -22
  101. package/dist/es/crypto/sha/sha1/sha1.mjs +0 -599
  102. package/dist/es/crypto/sha/sha256/index.mjs +0 -41
  103. package/dist/es/crypto/sha/sha256/sha256.mjs +0 -649
  104. package/dist/es/crypto/sha/sha3/index.mjs +0 -39
  105. package/dist/es/crypto/sha/sha3/sha3.mjs +0 -742
  106. package/dist/es/crypto/sha/sha512/index.mjs +0 -79
  107. package/dist/es/crypto/sha/sha512/sha512.mjs +0 -1177
  108. package/dist/es/crypto/sm/lib/asn1.mjs +0 -164
  109. package/dist/es/crypto/sm/lib/ec.mjs +0 -349
  110. package/dist/es/crypto/sm/lib/jsbn.mjs +0 -1630
  111. package/dist/es/crypto/sm/lib/sm3.mjs +0 -170
  112. package/dist/es/crypto/sm/lib/utils.mjs +0 -186
  113. package/dist/es/crypto/sm/sm2/index.mjs +0 -111
  114. package/dist/es/crypto/sm/sm2/sm2.mjs +0 -258
  115. package/dist/es/crypto/sm/sm3/index.mjs +0 -13
  116. package/dist/es/crypto/sm/sm3/sm3.mjs +0 -99
  117. package/dist/es/crypto/sm/sm4/index.mjs +0 -25
  118. package/dist/es/crypto/sm/sm4/sm4.mjs +0 -359
  119. package/dist/es/crypto/tea/index.mjs +0 -23
  120. package/dist/es/crypto/tea/tea.mjs +0 -211
  121. package/dist/es/date/index.mjs +0 -1262
  122. package/dist/es/desensitized/index.mjs +0 -69
  123. package/dist/es/device/index.mjs +0 -145
  124. package/dist/es/dom/index.mjs +0 -164
  125. package/dist/es/file/index.mjs +0 -323
  126. package/dist/es/function/index.mjs +0 -63
  127. package/dist/es/keycode/index.mjs +0 -139
  128. package/dist/es/math/index.mjs +0 -274
  129. package/dist/es/number/index.mjs +0 -12
  130. package/dist/es/object/index.mjs +0 -203
  131. package/dist/es/pagination/index.mjs +0 -134
  132. package/dist/es/random/index.mjs +0 -22
  133. package/dist/es/regexp/index.mjs +0 -98
  134. package/dist/es/storage/index.mjs +0 -9
  135. package/dist/es/storage/localStorage.mjs +0 -35
  136. package/dist/es/storage/sessionStorage.mjs +0 -35
  137. package/dist/es/string/index.mjs +0 -321
  138. package/dist/es/url/index.mjs +0 -261
  139. package/dist/es/validate/index.mjs +0 -451
  140. package/dist/es/weapp/index.mjs +0 -140
@@ -1,941 +0,0 @@
1
- /**
2
- * [js-md5]{@link https://github.com/emn178/js-md5}
3
- *
4
- * @namespace md5
5
- * @version 0.8.3
6
- * @author Chen, Yi-Cyuan [emn178@gmail.com]
7
- * @copyright Chen, Yi-Cyuan 2014-2023
8
- * @license MIT
9
- */
10
-
11
- var INPUT_ERROR = "input is invalid type";
12
- var FINALIZE_ERROR = "finalize already called";
13
- var WINDOW = typeof window === "object";
14
- var root = WINDOW ? window : {};
15
- if (root.JS_MD5_NO_WINDOW) {
16
- WINDOW = false;
17
- }
18
- var WEB_WORKER = !WINDOW && typeof self === "object";
19
- var NODE_JS = !root.JS_MD5_NO_NODE_JS && typeof process === "object" && process.versions && process.versions.node;
20
- if (NODE_JS) {
21
- root = global;
22
- } else if (WEB_WORKER) {
23
- root = self;
24
- }
25
- var ARRAY_BUFFER = !root.JS_MD5_NO_ARRAY_BUFFER && typeof ArrayBuffer !== "undefined";
26
- var HEX_CHARS = "0123456789abcdef".split("");
27
- var EXTRA = [128, 32768, 8388608, -2147483648];
28
- var SHIFT = [0, 8, 16, 24];
29
- var OUTPUT_TYPES = ["hex", "array", "digest", "buffer", "arrayBuffer", "base64"];
30
- var BASE64_ENCODE_CHAR = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split("");
31
-
32
- var blocks = [],
33
- buffer8;
34
- if (ARRAY_BUFFER) {
35
- var buffer = new ArrayBuffer(68);
36
- buffer8 = new Uint8Array(buffer);
37
- blocks = new Uint32Array(buffer);
38
- }
39
-
40
- var isArray = Array.isArray;
41
- if (root.JS_MD5_NO_NODE_JS || !isArray) {
42
- isArray = function (obj) {
43
- return Object.prototype.toString.call(obj) === "[object Array]";
44
- };
45
- }
46
-
47
- var isView = ArrayBuffer.isView;
48
- if (ARRAY_BUFFER && (root.JS_MD5_NO_ARRAY_BUFFER_IS_VIEW || !isView)) {
49
- isView = function (obj) {
50
- return typeof obj === "object" && obj.buffer && obj.buffer.constructor === ArrayBuffer;
51
- };
52
- }
53
-
54
- // [message: string, isString: bool]
55
- var formatMessage = function (message) {
56
- var type = typeof message;
57
- if (type === "string") {
58
- return [message, true];
59
- }
60
- if (type !== "object" || message === null) {
61
- throw new Error(INPUT_ERROR);
62
- }
63
- if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {
64
- return [new Uint8Array(message), false];
65
- }
66
- if (!isArray(message) && !isView(message)) {
67
- throw new Error(INPUT_ERROR);
68
- }
69
- return [message, false];
70
- };
71
-
72
- /**
73
- * @method hex
74
- * @memberof md5
75
- * @description Output hash as hex string
76
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
77
- * @returns {String} Hex string
78
- * @example
79
- * md5.hex('The quick brown fox jumps over the lazy dog');
80
- * // equal to
81
- * md5('The quick brown fox jumps over the lazy dog');
82
- */
83
- /**
84
- * @method digest
85
- * @memberof md5
86
- * @description Output hash as bytes array
87
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
88
- * @returns {Array} Bytes array
89
- * @example
90
- * md5.digest('The quick brown fox jumps over the lazy dog');
91
- */
92
- /**
93
- * @method array
94
- * @memberof md5
95
- * @description Output hash as bytes array
96
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
97
- * @returns {Array} Bytes array
98
- * @example
99
- * md5.array('The quick brown fox jumps over the lazy dog');
100
- */
101
- /**
102
- * @method arrayBuffer
103
- * @memberof md5
104
- * @description Output hash as ArrayBuffer
105
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
106
- * @returns {ArrayBuffer} ArrayBuffer
107
- * @example
108
- * md5.arrayBuffer('The quick brown fox jumps over the lazy dog');
109
- */
110
- /**
111
- * @method buffer
112
- * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
113
- * @memberof md5
114
- * @description Output hash as ArrayBuffer
115
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
116
- * @returns {ArrayBuffer} ArrayBuffer
117
- * @example
118
- * md5.buffer('The quick brown fox jumps over the lazy dog');
119
- */
120
- /**
121
- * @method base64
122
- * @memberof md5
123
- * @description Output hash as base64 string
124
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
125
- * @returns {String} base64 string
126
- * @example
127
- * md5.base64('The quick brown fox jumps over the lazy dog');
128
- */
129
- var createOutputMethod = function (outputType) {
130
- return function (message) {
131
- return new Md5(true).update(message)[outputType]();
132
- };
133
- };
134
-
135
- /**
136
- * @method create
137
- * @memberof md5
138
- * @description Create Md5 object
139
- * @returns {Md5} Md5 object.
140
- * @example
141
- * var hash = md5.create();
142
- */
143
- /**
144
- * @method update
145
- * @memberof md5
146
- * @description Create and update Md5 object
147
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
148
- * @returns {Md5} Md5 object.
149
- * @example
150
- * var hash = md5.update('The quick brown fox jumps over the lazy dog');
151
- * // equal to
152
- * var hash = md5.create();
153
- * hash.update('The quick brown fox jumps over the lazy dog');
154
- */
155
- var createMethod = function () {
156
- var method = createOutputMethod("hex");
157
- if (NODE_JS) {
158
- method = nodeWrap(method);
159
- }
160
- method.create = function () {
161
- return new Md5();
162
- };
163
- method.update = function (message) {
164
- return method.create().update(message);
165
- };
166
- for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
167
- var type = OUTPUT_TYPES[i];
168
- method[type] = createOutputMethod(type);
169
- }
170
- return method;
171
- };
172
-
173
- var nodeWrap = function (method) {
174
- var crypto = require("crypto");
175
- var Buffer = require("buffer").Buffer;
176
- var bufferFrom;
177
- if (Buffer.from && !root.JS_MD5_NO_BUFFER_FROM) {
178
- bufferFrom = Buffer.from;
179
- } else {
180
- bufferFrom = function (message) {
181
- return new Buffer(message);
182
- };
183
- }
184
- var nodeMethod = function (message) {
185
- if (typeof message === "string") {
186
- return crypto.createHash("md5").update(message, "utf8").digest("hex");
187
- } else {
188
- if (message === null || message === undefined) {
189
- throw new Error(INPUT_ERROR);
190
- } else if (message.constructor === ArrayBuffer) {
191
- message = new Uint8Array(message);
192
- }
193
- }
194
- if (isArray(message) || isView(message) || message.constructor === Buffer) {
195
- return crypto.createHash("md5").update(bufferFrom(message)).digest("hex");
196
- } else {
197
- return method(message);
198
- }
199
- };
200
- return nodeMethod;
201
- };
202
-
203
- /**
204
- * @namespace md5.hmac
205
- */
206
- /**
207
- * @method hex
208
- * @memberof md5.hmac
209
- * @description Output hash as hex string
210
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
211
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
212
- * @returns {String} Hex string
213
- * @example
214
- * md5.hmac.hex('key', 'The quick brown fox jumps over the lazy dog');
215
- * // equal to
216
- * md5.hmac('key', 'The quick brown fox jumps over the lazy dog');
217
- */
218
-
219
- /**
220
- * @method digest
221
- * @memberof md5.hmac
222
- * @description Output hash as bytes array
223
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
224
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
225
- * @returns {Array} Bytes array
226
- * @example
227
- * md5.hmac.digest('key', 'The quick brown fox jumps over the lazy dog');
228
- */
229
- /**
230
- * @method array
231
- * @memberof md5.hmac
232
- * @description Output hash as bytes array
233
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
234
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
235
- * @returns {Array} Bytes array
236
- * @example
237
- * md5.hmac.array('key', 'The quick brown fox jumps over the lazy dog');
238
- */
239
- /**
240
- * @method arrayBuffer
241
- * @memberof md5.hmac
242
- * @description Output hash as ArrayBuffer
243
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
244
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
245
- * @returns {ArrayBuffer} ArrayBuffer
246
- * @example
247
- * md5.hmac.arrayBuffer('key', 'The quick brown fox jumps over the lazy dog');
248
- */
249
- /**
250
- * @method buffer
251
- * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
252
- * @memberof md5.hmac
253
- * @description Output hash as ArrayBuffer
254
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
255
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
256
- * @returns {ArrayBuffer} ArrayBuffer
257
- * @example
258
- * md5.hmac.buffer('key', 'The quick brown fox jumps over the lazy dog');
259
- */
260
- /**
261
- * @method base64
262
- * @memberof md5.hmac
263
- * @description Output hash as base64 string
264
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
265
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
266
- * @returns {String} base64 string
267
- * @example
268
- * md5.hmac.base64('key', 'The quick brown fox jumps over the lazy dog');
269
- */
270
- var createHmacOutputMethod = function (outputType) {
271
- return function (key, message) {
272
- return new HmacMd5(key, true).update(message)[outputType]();
273
- };
274
- };
275
-
276
- /**
277
- * @method create
278
- * @memberof md5.hmac
279
- * @description Create HmacMd5 object
280
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
281
- * @returns {HmacMd5} HmacMd5 object.
282
- * @example
283
- * var hash = md5.hmac.create('key');
284
- */
285
- /**
286
- * @method update
287
- * @memberof md5.hmac
288
- * @description Create and update HmacMd5 object
289
- * @param {String|Array|Uint8Array|ArrayBuffer} key key
290
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
291
- * @returns {HmacMd5} HmacMd5 object.
292
- * @example
293
- * var hash = md5.hmac.update('key', 'The quick brown fox jumps over the lazy dog');
294
- * // equal to
295
- * var hash = md5.hmac.create('key');
296
- * hash.update('The quick brown fox jumps over the lazy dog');
297
- */
298
- var createHmacMethod = function () {
299
- var method = createHmacOutputMethod("hex");
300
- method.create = function (key) {
301
- return new HmacMd5(key);
302
- };
303
- method.update = function (key, message) {
304
- return method.create(key).update(message);
305
- };
306
- for (var i = 0; i < OUTPUT_TYPES.length; ++i) {
307
- var type = OUTPUT_TYPES[i];
308
- method[type] = createHmacOutputMethod(type);
309
- }
310
- return method;
311
- };
312
-
313
- /**
314
- * Md5 class
315
- * @class Md5
316
- * @description This is internal class.
317
- * @see {@link md5.create}
318
- */
319
- function Md5(sharedMemory) {
320
- if (sharedMemory) {
321
- blocks[0] =
322
- blocks[16] =
323
- blocks[1] =
324
- blocks[2] =
325
- blocks[3] =
326
- blocks[4] =
327
- blocks[5] =
328
- blocks[6] =
329
- blocks[7] =
330
- blocks[8] =
331
- blocks[9] =
332
- blocks[10] =
333
- blocks[11] =
334
- blocks[12] =
335
- blocks[13] =
336
- blocks[14] =
337
- blocks[15] =
338
- 0;
339
- this.blocks = blocks;
340
- this.buffer8 = buffer8;
341
- } else {
342
- if (ARRAY_BUFFER) {
343
- var buffer = new ArrayBuffer(68);
344
- this.buffer8 = new Uint8Array(buffer);
345
- this.blocks = new Uint32Array(buffer);
346
- } else {
347
- this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
348
- }
349
- }
350
- this.h0 = this.h1 = this.h2 = this.h3 = this.start = this.bytes = this.hBytes = 0;
351
- this.finalized = this.hashed = false;
352
- this.first = true;
353
- }
354
-
355
- /**
356
- * @method update
357
- * @memberof Md5
358
- * @instance
359
- * @description Update hash
360
- * @param {String|Array|Uint8Array|ArrayBuffer} message message to hash
361
- * @returns {Md5} Md5 object.
362
- * @see {@link md5.update}
363
- */
364
- Md5.prototype.update = function (message) {
365
- if (this.finalized) {
366
- throw new Error(FINALIZE_ERROR);
367
- }
368
-
369
- var result = formatMessage(message);
370
- message = result[0];
371
- var isString = result[1];
372
- var code,
373
- index = 0,
374
- i,
375
- length = message.length,
376
- blocks = this.blocks;
377
- var buffer8 = this.buffer8;
378
-
379
- while (index < length) {
380
- if (this.hashed) {
381
- this.hashed = false;
382
- blocks[0] = blocks[16];
383
- blocks[16] =
384
- blocks[1] =
385
- blocks[2] =
386
- blocks[3] =
387
- blocks[4] =
388
- blocks[5] =
389
- blocks[6] =
390
- blocks[7] =
391
- blocks[8] =
392
- blocks[9] =
393
- blocks[10] =
394
- blocks[11] =
395
- blocks[12] =
396
- blocks[13] =
397
- blocks[14] =
398
- blocks[15] =
399
- 0;
400
- }
401
-
402
- if (isString) {
403
- if (ARRAY_BUFFER) {
404
- for (i = this.start; index < length && i < 64; ++index) {
405
- code = message.charCodeAt(index);
406
- if (code < 0x80) {
407
- buffer8[i++] = code;
408
- } else if (code < 0x800) {
409
- buffer8[i++] = 0xc0 | (code >>> 6);
410
- buffer8[i++] = 0x80 | (code & 0x3f);
411
- } else if (code < 0xd800 || code >= 0xe000) {
412
- buffer8[i++] = 0xe0 | (code >>> 12);
413
- buffer8[i++] = 0x80 | ((code >>> 6) & 0x3f);
414
- buffer8[i++] = 0x80 | (code & 0x3f);
415
- } else {
416
- code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
417
- buffer8[i++] = 0xf0 | (code >>> 18);
418
- buffer8[i++] = 0x80 | ((code >>> 12) & 0x3f);
419
- buffer8[i++] = 0x80 | ((code >>> 6) & 0x3f);
420
- buffer8[i++] = 0x80 | (code & 0x3f);
421
- }
422
- }
423
- } else {
424
- for (i = this.start; index < length && i < 64; ++index) {
425
- code = message.charCodeAt(index);
426
- if (code < 0x80) {
427
- blocks[i >>> 2] |= code << SHIFT[i++ & 3];
428
- } else if (code < 0x800) {
429
- blocks[i >>> 2] |= (0xc0 | (code >>> 6)) << SHIFT[i++ & 3];
430
- blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
431
- } else if (code < 0xd800 || code >= 0xe000) {
432
- blocks[i >>> 2] |= (0xe0 | (code >>> 12)) << SHIFT[i++ & 3];
433
- blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];
434
- blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
435
- } else {
436
- code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));
437
- blocks[i >>> 2] |= (0xf0 | (code >>> 18)) << SHIFT[i++ & 3];
438
- blocks[i >>> 2] |= (0x80 | ((code >>> 12) & 0x3f)) << SHIFT[i++ & 3];
439
- blocks[i >>> 2] |= (0x80 | ((code >>> 6) & 0x3f)) << SHIFT[i++ & 3];
440
- blocks[i >>> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];
441
- }
442
- }
443
- }
444
- } else {
445
- if (ARRAY_BUFFER) {
446
- for (i = this.start; index < length && i < 64; ++index) {
447
- buffer8[i++] = message[index];
448
- }
449
- } else {
450
- for (i = this.start; index < length && i < 64; ++index) {
451
- blocks[i >>> 2] |= message[index] << SHIFT[i++ & 3];
452
- }
453
- }
454
- }
455
- this.lastByteIndex = i;
456
- this.bytes += i - this.start;
457
- if (i >= 64) {
458
- this.start = i - 64;
459
- this.hash();
460
- this.hashed = true;
461
- } else {
462
- this.start = i;
463
- }
464
- }
465
- if (this.bytes > 4294967295) {
466
- this.hBytes += (this.bytes / 4294967296) << 0;
467
- this.bytes = this.bytes % 4294967296;
468
- }
469
- return this;
470
- };
471
-
472
- Md5.prototype.finalize = function () {
473
- if (this.finalized) {
474
- return;
475
- }
476
- this.finalized = true;
477
- var blocks = this.blocks,
478
- i = this.lastByteIndex;
479
- blocks[i >>> 2] |= EXTRA[i & 3];
480
- if (i >= 56) {
481
- if (!this.hashed) {
482
- this.hash();
483
- }
484
- blocks[0] = blocks[16];
485
- blocks[16] =
486
- blocks[1] =
487
- blocks[2] =
488
- blocks[3] =
489
- blocks[4] =
490
- blocks[5] =
491
- blocks[6] =
492
- blocks[7] =
493
- blocks[8] =
494
- blocks[9] =
495
- blocks[10] =
496
- blocks[11] =
497
- blocks[12] =
498
- blocks[13] =
499
- blocks[14] =
500
- blocks[15] =
501
- 0;
502
- }
503
- blocks[14] = this.bytes << 3;
504
- blocks[15] = (this.hBytes << 3) | (this.bytes >>> 29);
505
- this.hash();
506
- };
507
-
508
- Md5.prototype.hash = function () {
509
- var a,
510
- b,
511
- c,
512
- d,
513
- bc,
514
- da,
515
- blocks = this.blocks;
516
-
517
- if (this.first) {
518
- a = blocks[0] - 680876937;
519
- a = (((a << 7) | (a >>> 25)) - 271733879) << 0;
520
- d = (-1732584194 ^ (a & 2004318071)) + blocks[1] - 117830708;
521
- d = (((d << 12) | (d >>> 20)) + a) << 0;
522
- c = (-271733879 ^ (d & (a ^ -271733879))) + blocks[2] - 1126478375;
523
- c = (((c << 17) | (c >>> 15)) + d) << 0;
524
- b = (a ^ (c & (d ^ a))) + blocks[3] - 1316259209;
525
- b = (((b << 22) | (b >>> 10)) + c) << 0;
526
- } else {
527
- a = this.h0;
528
- b = this.h1;
529
- c = this.h2;
530
- d = this.h3;
531
- a += (d ^ (b & (c ^ d))) + blocks[0] - 680876936;
532
- a = (((a << 7) | (a >>> 25)) + b) << 0;
533
- d += (c ^ (a & (b ^ c))) + blocks[1] - 389564586;
534
- d = (((d << 12) | (d >>> 20)) + a) << 0;
535
- c += (b ^ (d & (a ^ b))) + blocks[2] + 606105819;
536
- c = (((c << 17) | (c >>> 15)) + d) << 0;
537
- b += (a ^ (c & (d ^ a))) + blocks[3] - 1044525330;
538
- b = (((b << 22) | (b >>> 10)) + c) << 0;
539
- }
540
-
541
- a += (d ^ (b & (c ^ d))) + blocks[4] - 176418897;
542
- a = (((a << 7) | (a >>> 25)) + b) << 0;
543
- d += (c ^ (a & (b ^ c))) + blocks[5] + 1200080426;
544
- d = (((d << 12) | (d >>> 20)) + a) << 0;
545
- c += (b ^ (d & (a ^ b))) + blocks[6] - 1473231341;
546
- c = (((c << 17) | (c >>> 15)) + d) << 0;
547
- b += (a ^ (c & (d ^ a))) + blocks[7] - 45705983;
548
- b = (((b << 22) | (b >>> 10)) + c) << 0;
549
- a += (d ^ (b & (c ^ d))) + blocks[8] + 1770035416;
550
- a = (((a << 7) | (a >>> 25)) + b) << 0;
551
- d += (c ^ (a & (b ^ c))) + blocks[9] - 1958414417;
552
- d = (((d << 12) | (d >>> 20)) + a) << 0;
553
- c += (b ^ (d & (a ^ b))) + blocks[10] - 42063;
554
- c = (((c << 17) | (c >>> 15)) + d) << 0;
555
- b += (a ^ (c & (d ^ a))) + blocks[11] - 1990404162;
556
- b = (((b << 22) | (b >>> 10)) + c) << 0;
557
- a += (d ^ (b & (c ^ d))) + blocks[12] + 1804603682;
558
- a = (((a << 7) | (a >>> 25)) + b) << 0;
559
- d += (c ^ (a & (b ^ c))) + blocks[13] - 40341101;
560
- d = (((d << 12) | (d >>> 20)) + a) << 0;
561
- c += (b ^ (d & (a ^ b))) + blocks[14] - 1502002290;
562
- c = (((c << 17) | (c >>> 15)) + d) << 0;
563
- b += (a ^ (c & (d ^ a))) + blocks[15] + 1236535329;
564
- b = (((b << 22) | (b >>> 10)) + c) << 0;
565
- a += (c ^ (d & (b ^ c))) + blocks[1] - 165796510;
566
- a = (((a << 5) | (a >>> 27)) + b) << 0;
567
- d += (b ^ (c & (a ^ b))) + blocks[6] - 1069501632;
568
- d = (((d << 9) | (d >>> 23)) + a) << 0;
569
- c += (a ^ (b & (d ^ a))) + blocks[11] + 643717713;
570
- c = (((c << 14) | (c >>> 18)) + d) << 0;
571
- b += (d ^ (a & (c ^ d))) + blocks[0] - 373897302;
572
- b = (((b << 20) | (b >>> 12)) + c) << 0;
573
- a += (c ^ (d & (b ^ c))) + blocks[5] - 701558691;
574
- a = (((a << 5) | (a >>> 27)) + b) << 0;
575
- d += (b ^ (c & (a ^ b))) + blocks[10] + 38016083;
576
- d = (((d << 9) | (d >>> 23)) + a) << 0;
577
- c += (a ^ (b & (d ^ a))) + blocks[15] - 660478335;
578
- c = (((c << 14) | (c >>> 18)) + d) << 0;
579
- b += (d ^ (a & (c ^ d))) + blocks[4] - 405537848;
580
- b = (((b << 20) | (b >>> 12)) + c) << 0;
581
- a += (c ^ (d & (b ^ c))) + blocks[9] + 568446438;
582
- a = (((a << 5) | (a >>> 27)) + b) << 0;
583
- d += (b ^ (c & (a ^ b))) + blocks[14] - 1019803690;
584
- d = (((d << 9) | (d >>> 23)) + a) << 0;
585
- c += (a ^ (b & (d ^ a))) + blocks[3] - 187363961;
586
- c = (((c << 14) | (c >>> 18)) + d) << 0;
587
- b += (d ^ (a & (c ^ d))) + blocks[8] + 1163531501;
588
- b = (((b << 20) | (b >>> 12)) + c) << 0;
589
- a += (c ^ (d & (b ^ c))) + blocks[13] - 1444681467;
590
- a = (((a << 5) | (a >>> 27)) + b) << 0;
591
- d += (b ^ (c & (a ^ b))) + blocks[2] - 51403784;
592
- d = (((d << 9) | (d >>> 23)) + a) << 0;
593
- c += (a ^ (b & (d ^ a))) + blocks[7] + 1735328473;
594
- c = (((c << 14) | (c >>> 18)) + d) << 0;
595
- b += (d ^ (a & (c ^ d))) + blocks[12] - 1926607734;
596
- b = (((b << 20) | (b >>> 12)) + c) << 0;
597
- bc = b ^ c;
598
- a += (bc ^ d) + blocks[5] - 378558;
599
- a = (((a << 4) | (a >>> 28)) + b) << 0;
600
- d += (bc ^ a) + blocks[8] - 2022574463;
601
- d = (((d << 11) | (d >>> 21)) + a) << 0;
602
- da = d ^ a;
603
- c += (da ^ b) + blocks[11] + 1839030562;
604
- c = (((c << 16) | (c >>> 16)) + d) << 0;
605
- b += (da ^ c) + blocks[14] - 35309556;
606
- b = (((b << 23) | (b >>> 9)) + c) << 0;
607
- bc = b ^ c;
608
- a += (bc ^ d) + blocks[1] - 1530992060;
609
- a = (((a << 4) | (a >>> 28)) + b) << 0;
610
- d += (bc ^ a) + blocks[4] + 1272893353;
611
- d = (((d << 11) | (d >>> 21)) + a) << 0;
612
- da = d ^ a;
613
- c += (da ^ b) + blocks[7] - 155497632;
614
- c = (((c << 16) | (c >>> 16)) + d) << 0;
615
- b += (da ^ c) + blocks[10] - 1094730640;
616
- b = (((b << 23) | (b >>> 9)) + c) << 0;
617
- bc = b ^ c;
618
- a += (bc ^ d) + blocks[13] + 681279174;
619
- a = (((a << 4) | (a >>> 28)) + b) << 0;
620
- d += (bc ^ a) + blocks[0] - 358537222;
621
- d = (((d << 11) | (d >>> 21)) + a) << 0;
622
- da = d ^ a;
623
- c += (da ^ b) + blocks[3] - 722521979;
624
- c = (((c << 16) | (c >>> 16)) + d) << 0;
625
- b += (da ^ c) + blocks[6] + 76029189;
626
- b = (((b << 23) | (b >>> 9)) + c) << 0;
627
- bc = b ^ c;
628
- a += (bc ^ d) + blocks[9] - 640364487;
629
- a = (((a << 4) | (a >>> 28)) + b) << 0;
630
- d += (bc ^ a) + blocks[12] - 421815835;
631
- d = (((d << 11) | (d >>> 21)) + a) << 0;
632
- da = d ^ a;
633
- c += (da ^ b) + blocks[15] + 530742520;
634
- c = (((c << 16) | (c >>> 16)) + d) << 0;
635
- b += (da ^ c) + blocks[2] - 995338651;
636
- b = (((b << 23) | (b >>> 9)) + c) << 0;
637
- a += (c ^ (b | ~d)) + blocks[0] - 198630844;
638
- a = (((a << 6) | (a >>> 26)) + b) << 0;
639
- d += (b ^ (a | ~c)) + blocks[7] + 1126891415;
640
- d = (((d << 10) | (d >>> 22)) + a) << 0;
641
- c += (a ^ (d | ~b)) + blocks[14] - 1416354905;
642
- c = (((c << 15) | (c >>> 17)) + d) << 0;
643
- b += (d ^ (c | ~a)) + blocks[5] - 57434055;
644
- b = (((b << 21) | (b >>> 11)) + c) << 0;
645
- a += (c ^ (b | ~d)) + blocks[12] + 1700485571;
646
- a = (((a << 6) | (a >>> 26)) + b) << 0;
647
- d += (b ^ (a | ~c)) + blocks[3] - 1894986606;
648
- d = (((d << 10) | (d >>> 22)) + a) << 0;
649
- c += (a ^ (d | ~b)) + blocks[10] - 1051523;
650
- c = (((c << 15) | (c >>> 17)) + d) << 0;
651
- b += (d ^ (c | ~a)) + blocks[1] - 2054922799;
652
- b = (((b << 21) | (b >>> 11)) + c) << 0;
653
- a += (c ^ (b | ~d)) + blocks[8] + 1873313359;
654
- a = (((a << 6) | (a >>> 26)) + b) << 0;
655
- d += (b ^ (a | ~c)) + blocks[15] - 30611744;
656
- d = (((d << 10) | (d >>> 22)) + a) << 0;
657
- c += (a ^ (d | ~b)) + blocks[6] - 1560198380;
658
- c = (((c << 15) | (c >>> 17)) + d) << 0;
659
- b += (d ^ (c | ~a)) + blocks[13] + 1309151649;
660
- b = (((b << 21) | (b >>> 11)) + c) << 0;
661
- a += (c ^ (b | ~d)) + blocks[4] - 145523070;
662
- a = (((a << 6) | (a >>> 26)) + b) << 0;
663
- d += (b ^ (a | ~c)) + blocks[11] - 1120210379;
664
- d = (((d << 10) | (d >>> 22)) + a) << 0;
665
- c += (a ^ (d | ~b)) + blocks[2] + 718787259;
666
- c = (((c << 15) | (c >>> 17)) + d) << 0;
667
- b += (d ^ (c | ~a)) + blocks[9] - 343485551;
668
- b = (((b << 21) | (b >>> 11)) + c) << 0;
669
-
670
- if (this.first) {
671
- this.h0 = (a + 1732584193) << 0;
672
- this.h1 = (b - 271733879) << 0;
673
- this.h2 = (c - 1732584194) << 0;
674
- this.h3 = (d + 271733878) << 0;
675
- this.first = false;
676
- } else {
677
- this.h0 = (this.h0 + a) << 0;
678
- this.h1 = (this.h1 + b) << 0;
679
- this.h2 = (this.h2 + c) << 0;
680
- this.h3 = (this.h3 + d) << 0;
681
- }
682
- };
683
-
684
- /**
685
- * @method hex
686
- * @memberof Md5
687
- * @instance
688
- * @description Output hash as hex string
689
- * @returns {String} Hex string
690
- * @see {@link md5.hex}
691
- * @example
692
- * hash.hex();
693
- */
694
- Md5.prototype.hex = function () {
695
- this.finalize();
696
-
697
- var h0 = this.h0,
698
- h1 = this.h1,
699
- h2 = this.h2,
700
- h3 = this.h3;
701
-
702
- return (
703
- HEX_CHARS[(h0 >>> 4) & 0x0f] +
704
- HEX_CHARS[h0 & 0x0f] +
705
- HEX_CHARS[(h0 >>> 12) & 0x0f] +
706
- HEX_CHARS[(h0 >>> 8) & 0x0f] +
707
- HEX_CHARS[(h0 >>> 20) & 0x0f] +
708
- HEX_CHARS[(h0 >>> 16) & 0x0f] +
709
- HEX_CHARS[(h0 >>> 28) & 0x0f] +
710
- HEX_CHARS[(h0 >>> 24) & 0x0f] +
711
- HEX_CHARS[(h1 >>> 4) & 0x0f] +
712
- HEX_CHARS[h1 & 0x0f] +
713
- HEX_CHARS[(h1 >>> 12) & 0x0f] +
714
- HEX_CHARS[(h1 >>> 8) & 0x0f] +
715
- HEX_CHARS[(h1 >>> 20) & 0x0f] +
716
- HEX_CHARS[(h1 >>> 16) & 0x0f] +
717
- HEX_CHARS[(h1 >>> 28) & 0x0f] +
718
- HEX_CHARS[(h1 >>> 24) & 0x0f] +
719
- HEX_CHARS[(h2 >>> 4) & 0x0f] +
720
- HEX_CHARS[h2 & 0x0f] +
721
- HEX_CHARS[(h2 >>> 12) & 0x0f] +
722
- HEX_CHARS[(h2 >>> 8) & 0x0f] +
723
- HEX_CHARS[(h2 >>> 20) & 0x0f] +
724
- HEX_CHARS[(h2 >>> 16) & 0x0f] +
725
- HEX_CHARS[(h2 >>> 28) & 0x0f] +
726
- HEX_CHARS[(h2 >>> 24) & 0x0f] +
727
- HEX_CHARS[(h3 >>> 4) & 0x0f] +
728
- HEX_CHARS[h3 & 0x0f] +
729
- HEX_CHARS[(h3 >>> 12) & 0x0f] +
730
- HEX_CHARS[(h3 >>> 8) & 0x0f] +
731
- HEX_CHARS[(h3 >>> 20) & 0x0f] +
732
- HEX_CHARS[(h3 >>> 16) & 0x0f] +
733
- HEX_CHARS[(h3 >>> 28) & 0x0f] +
734
- HEX_CHARS[(h3 >>> 24) & 0x0f]
735
- );
736
- };
737
-
738
- /**
739
- * @method toString
740
- * @memberof Md5
741
- * @instance
742
- * @description Output hash as hex string
743
- * @returns {String} Hex string
744
- * @see {@link md5.hex}
745
- * @example
746
- * hash.toString();
747
- */
748
- Md5.prototype.toString = Md5.prototype.hex;
749
-
750
- /**
751
- * @method digest
752
- * @memberof Md5
753
- * @instance
754
- * @description Output hash as bytes array
755
- * @returns {Array} Bytes array
756
- * @see {@link md5.digest}
757
- * @example
758
- * hash.digest();
759
- */
760
- Md5.prototype.digest = function () {
761
- this.finalize();
762
-
763
- var h0 = this.h0,
764
- h1 = this.h1,
765
- h2 = this.h2,
766
- h3 = this.h3;
767
- return [
768
- h0 & 0xff,
769
- (h0 >>> 8) & 0xff,
770
- (h0 >>> 16) & 0xff,
771
- (h0 >>> 24) & 0xff,
772
- h1 & 0xff,
773
- (h1 >>> 8) & 0xff,
774
- (h1 >>> 16) & 0xff,
775
- (h1 >>> 24) & 0xff,
776
- h2 & 0xff,
777
- (h2 >>> 8) & 0xff,
778
- (h2 >>> 16) & 0xff,
779
- (h2 >>> 24) & 0xff,
780
- h3 & 0xff,
781
- (h3 >>> 8) & 0xff,
782
- (h3 >>> 16) & 0xff,
783
- (h3 >>> 24) & 0xff,
784
- ];
785
- };
786
-
787
- /**
788
- * @method array
789
- * @memberof Md5
790
- * @instance
791
- * @description Output hash as bytes array
792
- * @returns {Array} Bytes array
793
- * @see {@link md5.array}
794
- * @example
795
- * hash.array();
796
- */
797
- Md5.prototype.array = Md5.prototype.digest;
798
-
799
- /**
800
- * @method arrayBuffer
801
- * @memberof Md5
802
- * @instance
803
- * @description Output hash as ArrayBuffer
804
- * @returns {ArrayBuffer} ArrayBuffer
805
- * @see {@link md5.arrayBuffer}
806
- * @example
807
- * hash.arrayBuffer();
808
- */
809
- Md5.prototype.arrayBuffer = function () {
810
- this.finalize();
811
-
812
- var buffer = new ArrayBuffer(16);
813
- var blocks = new Uint32Array(buffer);
814
- blocks[0] = this.h0;
815
- blocks[1] = this.h1;
816
- blocks[2] = this.h2;
817
- blocks[3] = this.h3;
818
- return buffer;
819
- };
820
-
821
- /**
822
- * @method buffer
823
- * @deprecated This maybe confuse with Buffer in node.js. Please use arrayBuffer instead.
824
- * @memberof Md5
825
- * @instance
826
- * @description Output hash as ArrayBuffer
827
- * @returns {ArrayBuffer} ArrayBuffer
828
- * @see {@link md5.buffer}
829
- * @example
830
- * hash.buffer();
831
- */
832
- Md5.prototype.buffer = Md5.prototype.arrayBuffer;
833
-
834
- /**
835
- * @method base64
836
- * @memberof Md5
837
- * @instance
838
- * @description Output hash as base64 string
839
- * @returns {String} base64 string
840
- * @see {@link md5.base64}
841
- * @example
842
- * hash.base64();
843
- */
844
- Md5.prototype.base64 = function () {
845
- var v1,
846
- v2,
847
- v3,
848
- base64Str = "",
849
- bytes = this.array();
850
- for (var i = 0; i < 15; ) {
851
- v1 = bytes[i++];
852
- v2 = bytes[i++];
853
- v3 = bytes[i++];
854
- base64Str +=
855
- BASE64_ENCODE_CHAR[v1 >>> 2] +
856
- BASE64_ENCODE_CHAR[((v1 << 4) | (v2 >>> 4)) & 63] +
857
- BASE64_ENCODE_CHAR[((v2 << 2) | (v3 >>> 6)) & 63] +
858
- BASE64_ENCODE_CHAR[v3 & 63];
859
- }
860
- v1 = bytes[i];
861
- base64Str += BASE64_ENCODE_CHAR[v1 >>> 2] + BASE64_ENCODE_CHAR[(v1 << 4) & 63] + "==";
862
- return base64Str;
863
- };
864
-
865
- /**
866
- * HmacMd5 class
867
- * @class HmacMd5
868
- * @extends Md5
869
- * @description This is internal class.
870
- * @see {@link md5.hmac.create}
871
- */
872
- function HmacMd5(key, sharedMemory) {
873
- var i,
874
- result = formatMessage(key);
875
- key = result[0];
876
- if (result[1]) {
877
- var bytes = [],
878
- length = key.length,
879
- index = 0,
880
- code;
881
- for (i = 0; i < length; ++i) {
882
- code = key.charCodeAt(i);
883
- if (code < 0x80) {
884
- bytes[index++] = code;
885
- } else if (code < 0x800) {
886
- bytes[index++] = 0xc0 | (code >>> 6);
887
- bytes[index++] = 0x80 | (code & 0x3f);
888
- } else if (code < 0xd800 || code >= 0xe000) {
889
- bytes[index++] = 0xe0 | (code >>> 12);
890
- bytes[index++] = 0x80 | ((code >>> 6) & 0x3f);
891
- bytes[index++] = 0x80 | (code & 0x3f);
892
- } else {
893
- code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));
894
- bytes[index++] = 0xf0 | (code >>> 18);
895
- bytes[index++] = 0x80 | ((code >>> 12) & 0x3f);
896
- bytes[index++] = 0x80 | ((code >>> 6) & 0x3f);
897
- bytes[index++] = 0x80 | (code & 0x3f);
898
- }
899
- }
900
- key = bytes;
901
- }
902
-
903
- if (key.length > 64) {
904
- key = new Md5(true).update(key).array();
905
- }
906
-
907
- var oKeyPad = [],
908
- iKeyPad = [];
909
- for (i = 0; i < 64; ++i) {
910
- var b = key[i] || 0;
911
- oKeyPad[i] = 0x5c ^ b;
912
- iKeyPad[i] = 0x36 ^ b;
913
- }
914
-
915
- Md5.call(this, sharedMemory);
916
-
917
- this.update(iKeyPad);
918
- this.oKeyPad = oKeyPad;
919
- this.inner = true;
920
- this.sharedMemory = sharedMemory;
921
- }
922
-
923
- HmacMd5.prototype = new Md5();
924
-
925
- HmacMd5.prototype.finalize = function () {
926
- Md5.prototype.finalize.call(this);
927
- if (this.inner) {
928
- this.inner = false;
929
- var innerHash = this.array();
930
- Md5.call(this, this.sharedMemory);
931
- this.update(this.oKeyPad);
932
- this.update(innerHash);
933
- Md5.prototype.finalize.call(this);
934
- }
935
- };
936
-
937
- /* 以下是内部实现需要的es模块化导出方法 */
938
- const md5 = createMethod();
939
- const md5_hmac = createHmacMethod();
940
-
941
- export { md5, md5_hmac };