@ivujs/i-utils 1.1.16 → 1.1.17

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