@10yun/cv-mobile-ui 0.5.38 → 0.5.39

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