js-md5 0.7.2 → 0.8.0

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