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