diff --git a/.babelrc b/.babelrc
new file mode 100644
index 0000000..22d880b
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,5 @@
+{
+ "presets": [
+ [ "es2015", { "modules": false } ]
+ ]
+}
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 9daa824..0724f5b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
.DS_Store
node_modules
+.idea/
+package-lock.json
diff --git a/README.md b/README.md
index 958212f..cdad11c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# JavaScript MD5
+**This is fork from [blueimp](https://github.com/blueimp/JavaScript-MD5), rewritten in es6, and added rollup + babel in build.**
+
## Demo
[JavaScript MD5 Demo](https://blueimp.github.io/JavaScript-MD5/)
@@ -15,7 +17,7 @@ Include the (minified) JavaScript [MD5](https://en.wikipedia.org/wiki/MD5)
script in your HTML markup:
```html
-
+
```
In your application code, calculate the
@@ -26,6 +28,16 @@ method with the string as argument:
```js
var hash = md5("value"); // "2063c1608d6e0baf80249c42e2be5804"
```
+### in es6 imports
+
+In `crc/md5` folder still available raw es6 source, without babel/rollup.
+You can use them in your projects, when raw es6 is required.
+
+```javascript
+ import md5 from 'md5';
+ var hash = md5("value"); // "2063c1608d6e0baf80249c42e2be5804"
+
+```
### Server-side
@@ -36,7 +48,7 @@ Create a new directory and add the **md5.js** file. Or alternatively,
install the **blueimp-md5** package with [npm](https://www.npmjs.org/):
```sh
-npm install blueimp-md5
+npm install blueimp-md5-es6
```
Add a file **server.js** with the following content:
@@ -56,6 +68,7 @@ require("http").createServer(function (req, res) {
console.log("Server running at http://localhost:8080/");
```
+
Run the application with the following command:
```sh
diff --git a/dist/es6/md5.js b/dist/es6/md5.js
new file mode 100644
index 0000000..9b95346
--- /dev/null
+++ b/dist/es6/md5.js
@@ -0,0 +1,253 @@
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global.md5 = factory());
+}(this, (function () { 'use strict';
+
+/*
+ * JavaScript MD5
+ * https://github.com/blueimp/JavaScript-MD5
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * https://opensource.org/licenses/MIT
+ *
+ * Based on
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+const safeAdd = (x, y) => {
+ let lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ return (((x >> 16) + (y >> 16) + (lsw >> 16)) << 16) | (lsw & 0xFFFF)
+};
+
+/*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+const bitRotateLeft = (num, cnt) => (num << cnt) | (num >>> (32 - cnt));
+
+/*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+const md5cmn = (q, a, b, x, s, t) => safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
+const md5ff = (a, b, c, d, x, s, t) => md5cmn((b & c) | ((~b) & d), a, b, x, s, t);
+const md5gg = (a, b, c, d, x, s, t) => md5cmn((b & d) | (c & (~d)), a, b, x, s, t);
+const md5hh = (a, b, c, d, x, s, t) => md5cmn(b ^ c ^ d, a, b, x, s, t);
+const md5ii = (a, b, c, d, x, s, t) => md5cmn(c ^ (b | (~d)), a, b, x, s, t);
+
+const firstChunk = (chunks, x, i) => {
+ let [a, b, c, d] = chunks;
+ a = md5ff(a, b, c, d, x[i + 0], 7, -680876936);
+ d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+ c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+ b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+
+ a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+ d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+ c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+ b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+
+ a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+ d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+ c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
+ b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+
+ a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+ d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+ c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+ b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+
+ return [a, b, c, d]
+ };
+const secondChunk = (chunks, x, i) => {
+ let [a, b, c, d] = chunks;
+ a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+ d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+ c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+ b = md5gg(b, c, d, a, x[i], 20, -373897302);
+
+ a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+ d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+ c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+ b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+
+ a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+ d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+ c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+ b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+
+ a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+ d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+ c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+ b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+
+ return [a, b, c, d]
+ };
+const thirdChunk = (chunks, x, i) => {
+ let [a, b, c, d] = chunks;
+ a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
+ d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+ c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+ b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+
+ a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+ d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+ c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+ b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+
+ a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+ d = md5hh(d, a, b, c, x[i], 11, -358537222);
+ c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+ b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+
+ a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+ d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+ c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+ b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+
+ return [a, b, c, d]
+ };
+const fourthChunk = (chunks, x, i) => {
+ let [a, b, c, d] = chunks;
+ a = md5ii(a, b, c, d, x[i], 6, -198630844);
+ d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+ c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+ b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+
+ a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+ d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+ c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+ b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+
+ a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+ d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+ c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+ b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+
+ a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+ d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+ c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+ b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+ return [a, b, c, d]
+ };
+/*
+ * Calculate the MD5 of an array of little-endian words, and a bit length.
+ */
+const binlMD5 = (x, len) => {
+ /* append padding */
+ x[len >> 5] |= 0x80 << (len % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+ let commands = [firstChunk, secondChunk, thirdChunk, fourthChunk],
+ initialChunks = [
+ 1732584193,
+ -271733879,
+ -1732584194,
+ 271733878
+ ];
+ return Array.from({length: Math.floor(x.length / 16) + 1}, (v, i) => i * 16)
+ .reduce((chunks, i) => commands
+ .reduce((newChunks, apply) => apply(newChunks, x, i), chunks.slice())
+ .map((chunk, index) => safeAdd(chunk, chunks[index])), initialChunks)
+
+};
+
+/*
+ * Convert an array of little-endian words to a string
+ */
+const binl2rstr = input => Array(input.length * 4).fill(8).reduce((output, k, i) => output + String.fromCharCode((input[(i * k) >> 5] >>> ((i * k) % 32)) & 0xFF), '');
+
+/*
+ * Convert a raw string to an array of little-endian words
+ * Characters >255 have their high-byte silently ignored.
+ */
+const rstr2binl = input => Array.from(input).map(i => i.charCodeAt(0)).reduce((output, cc, i) => {
+ let resp = output.slice();
+ resp[(i * 8) >> 5] |= (cc & 0xFF) << ((i * 8) % 32);
+ return resp
+}, []);
+
+/*
+ * Calculate the MD5 of a raw string
+ */
+const rstrMD5 = string => binl2rstr(binlMD5(rstr2binl(string), string.length * 8));
+/*
+ * Calculate the HMAC-MD5, of a key and some data (raw strings)
+ */
+const strHMACMD5 = (key, data) => {
+ let bkey = rstr2binl(key),
+ ipad = Array(16).fill(undefined ^ 0x36363636),
+ opad = Array(16).fill(undefined ^ 0x5C5C5C5C);
+
+ if (bkey.length > 16) {
+ bkey = binlMD5(bkey, key.length * 8);
+ }
+
+ bkey.forEach((k, i) => {
+ ipad[i] = k ^ 0x36363636;
+ opad[i] = k ^ 0x5C5C5C5C;
+ });
+
+ return binl2rstr(binlMD5(opad.concat(binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)), 512 + 128))
+};
+
+/*
+ * Convert a raw string to a hex string
+ */
+const rstr2hex = input => {
+ const hexTab = (pos) => '0123456789abcdef'.charAt(pos);
+ return Array.from(input).map(c => c.charCodeAt(0)).reduce((output, x, i) => output + hexTab((x >>> 4) & 0x0F) + hexTab(x & 0x0F), '')
+};
+
+/*
+ * Encode a string as utf-8
+ */
+
+const str2rstrUTF8 = unicodeString => {
+ if (typeof unicodeString !== 'string') throw new TypeError('parameter ‘unicodeString’ is not a string');
+ const cc = c => c.charCodeAt(0);
+ return unicodeString
+ .replace(/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz
+ c => String.fromCharCode(0xc0 | cc(c) >> 6, 0x80 | cc(c) & 0x3f))
+ .replace(/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz
+ c => String.fromCharCode(0xe0 | cc(c) >> 12, 0x80 | cc(c) >> 6 & 0x3F, 0x80 | cc(c) & 0x3f))
+};
+
+/*
+ * Take string arguments and return either raw or hex encoded strings
+ */
+const rawMD5 = s => rstrMD5(str2rstrUTF8(s));
+
+const hexMD5 = s => rstr2hex(rawMD5(s));
+
+const rawHMACMD5 = (k, d) => strHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
+
+const hexHMACMD5 = (k, d) => rstr2hex(rawHMACMD5(k, d));
+
+
+var md5 = (string, key, raw) => {
+ if (!key) {
+ if (!raw) {
+ return hexMD5(string)
+ }
+ return rawMD5(string)
+ }
+ if (!raw) {
+ return hexHMACMD5(key, string)
+ }
+ return rawHMACMD5(key, string)
+};
+
+return md5;
+
+})));
diff --git a/dist/es6/md5.min.js b/dist/es6/md5.min.js
new file mode 100644
index 0000000..77a4276
--- /dev/null
+++ b/dist/es6/md5.min.js
@@ -0,0 +1,3 @@
+(function(a,b){'object'==typeof exports&&'undefined'!=typeof module?module.exports=b():'function'==typeof define&&define.amd?define(b):a.md5=b()})(this,function(){'use strict';var a=String.fromCharCode;const c=(a,b)=>{let c=(65535&a)+(65535&b);return(a>>16)+(b>>16)+(c>>16)<<16|65535&c},d=(a,b)=>a<>>32-b,e=(e,f,a,b,g,h)=>c(d(c(c(f,e),c(b,h)),g),a),f=(f,a,g,c,d,h,i)=>e(a&g|~a&c,f,a,d,h,i),g=(f,a,b,c,g,h,i)=>e(a&c|b&~c,f,a,g,h,i),h=(f,a,b,c,d,g,h)=>e(a^b^c,f,a,d,g,h),j=(f,a,b,c,g,h,i)=>e(b^(a|~c),f,a,g,h,i),b=(e,g,h)=>{let[i,a,b,c]=e;return i=f(i,a,b,c,g[h+0],7,-680876936),c=f(c,i,a,b,g[h+1],12,-389564586),b=f(b,c,i,a,g[h+2],17,606105819),a=f(a,b,c,i,g[h+3],22,-1044525330),i=f(i,a,b,c,g[h+4],7,-176418897),c=f(c,i,a,b,g[h+5],12,1200080426),b=f(b,c,i,a,g[h+6],17,-1473231341),a=f(a,b,c,i,g[h+7],22,-45705983),i=f(i,a,b,c,g[h+8],7,1770035416),c=f(c,i,a,b,g[h+9],12,-1958414417),b=f(b,c,i,a,g[h+10],17,-42063),a=f(a,b,c,i,g[h+11],22,-1990404162),i=f(i,a,b,c,g[h+12],7,1804603682),c=f(c,i,a,b,g[h+13],12,-40341101),b=f(b,c,i,a,g[h+14],17,-1502002290),a=f(a,b,c,i,g[h+15],22,1236535329),[i,a,b,c]},i=(e,f,h)=>{let[i,a,b,c]=e;return i=g(i,a,b,c,f[h+1],5,-165796510),c=g(c,i,a,b,f[h+6],9,-1069501632),b=g(b,c,i,a,f[h+11],14,643717713),a=g(a,b,c,i,f[h],20,-373897302),i=g(i,a,b,c,f[h+5],5,-701558691),c=g(c,i,a,b,f[h+10],9,38016083),b=g(b,c,i,a,f[h+15],14,-660478335),a=g(a,b,c,i,f[h+4],20,-405537848),i=g(i,a,b,c,f[h+9],5,568446438),c=g(c,i,a,b,f[h+14],9,-1019803690),b=g(b,c,i,a,f[h+3],14,-187363961),a=g(a,b,c,i,f[h+8],20,1163531501),i=g(i,a,b,c,f[h+13],5,-1444681467),c=g(c,i,a,b,f[h+2],9,-51403784),b=g(b,c,i,a,f[h+7],14,1735328473),a=g(a,b,c,i,f[h+12],20,-1926607734),[i,a,b,c]},k=(e,f,g)=>{let[i,a,b,c]=e;return i=h(i,a,b,c,f[g+5],4,-378558),c=h(c,i,a,b,f[g+8],11,-2022574463),b=h(b,c,i,a,f[g+11],16,1839030562),a=h(a,b,c,i,f[g+14],23,-35309556),i=h(i,a,b,c,f[g+1],4,-1530992060),c=h(c,i,a,b,f[g+4],11,1272893353),b=h(b,c,i,a,f[g+7],16,-155497632),a=h(a,b,c,i,f[g+10],23,-1094730640),i=h(i,a,b,c,f[g+13],4,681279174),c=h(c,i,a,b,f[g],11,-358537222),b=h(b,c,i,a,f[g+3],16,-722521979),a=h(a,b,c,i,f[g+6],23,76029189),i=h(i,a,b,c,f[g+9],4,-640364487),c=h(c,i,a,b,f[g+12],11,-421815835),b=h(b,c,i,a,f[g+15],16,530742520),a=h(a,b,c,i,f[g+2],23,-995338651),[i,a,b,c]},l=(e,f,g)=>{let[h,a,b,c]=e;return h=j(h,a,b,c,f[g],6,-198630844),c=j(c,h,a,b,f[g+7],10,1126891415),b=j(b,c,h,a,f[g+14],15,-1416354905),a=j(a,b,c,h,f[g+5],21,-57434055),h=j(h,a,b,c,f[g+12],6,1700485571),c=j(c,h,a,b,f[g+3],10,-1894986606),b=j(b,c,h,a,f[g+10],15,-1051523),a=j(a,b,c,h,f[g+1],21,-2054922799),h=j(h,a,b,c,f[g+8],6,1873313359),c=j(c,h,a,b,f[g+15],10,-30611744),b=j(b,c,h,a,f[g+6],15,-1560198380),a=j(a,b,c,h,f[g+13],21,1309151649),h=j(h,a,b,c,f[g+4],6,-145523070),c=j(c,h,a,b,f[g+11],10,-1120210379),b=j(b,c,h,a,f[g+2],15,718787259),a=j(a,b,c,h,f[g+9],21,-343485551),[h,a,b,c]},m=(a,d)=>{a[d>>5]|=128<>>9<<4)+14]=d;let e=[b,i,k,l];return Array.from({length:Math.floor(a.length/16)+1},(a,b)=>16*b).reduce((b,d)=>e.reduce((b,c)=>c(b,a,d),b.slice()).map((a,d)=>c(a,b[d])),[1732584193,-271733879,-1732584194,271733878])},n=(b)=>Array(4*b.length).fill(8).reduce((c,d,e)=>c+a(255&b[e*d>>5]>>>e*d%32),''),o=(a)=>Array.from(a).map((a)=>a.charCodeAt(0)).reduce((a,b,c)=>{let d=a.slice();return d[8*c>>5]|=(255&b)<<8*c%32,d},[]),p=(a)=>n(m(o(a),8*a.length)),q=(a,b)=>{let c=o(a),d=Array(16).fill(909522486),e=Array(16).fill(1549556828);return 16{d[b]=909522486^a,e[b]=1549556828^a}),n(m(e.concat(m(d.concat(o(b)),512+8*b.length)),640))},r=(a)=>{const b=(a)=>'0123456789abcdef'.charAt(a);return Array.from(a).map((a)=>a.charCodeAt(0)).reduce((a,c)=>a+b(15&c>>>4)+b(15&c),'')},t=(b)=>{if('string'!=typeof b)throw new TypeError('parameter \u2018unicodeString\u2019 is not a string');const d=(a)=>a.charCodeAt(0);return b.replace(/[\u0080-\u07ff]/g,(b)=>a(192|d(b)>>6,128|63&d(b))).replace(/[\u0800-\uffff]/g,(b)=>a(224|d(b)>>12,128|63&d(b)>>6,128|63&d(b)))},u=(a)=>p(t(a)),s=(a)=>r(u(a)),v=(a,b)=>q(t(a),t(b)),w=(a,b)=>r(v(a,b));return(a,b,c)=>{return b?c?v(b,a):w(b,a):c?u(a):s(a)}});
+
+//# sourceMappingURL=md5.min.js.map
\ No newline at end of file
diff --git a/dist/es6/md5.min.js.map b/dist/es6/md5.min.js.map
new file mode 100644
index 0000000..94ea22e
--- /dev/null
+++ b/dist/es6/md5.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["md5.js"],"names":[],"mappings":"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","file":"md5.min.js","sourcesContent":["(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.md5 = factory());\n}(this, (function () { 'use strict';\n\n/*\n * JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\n\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\nconst safeAdd = (x, y) => {\n let lsw = (x & 0xFFFF) + (y & 0xFFFF);\n return (((x >> 16) + (y >> 16) + (lsw >> 16)) << 16) | (lsw & 0xFFFF)\n};\n\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\nconst bitRotateLeft = (num, cnt) => (num << cnt) | (num >>> (32 - cnt));\n\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\nconst md5cmn = (q, a, b, x, s, t) => safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\nconst md5ff = (a, b, c, d, x, s, t) => md5cmn((b & c) | ((~b) & d), a, b, x, s, t);\nconst md5gg = (a, b, c, d, x, s, t) => md5cmn((b & d) | (c & (~d)), a, b, x, s, t);\nconst md5hh = (a, b, c, d, x, s, t) => md5cmn(b ^ c ^ d, a, b, x, s, t);\nconst md5ii = (a, b, c, d, x, s, t) => md5cmn(c ^ (b | (~d)), a, b, x, s, t);\n\nconst firstChunk = (chunks, x, i) => {\n let [a, b, c, d] = chunks;\n a = md5ff(a, b, c, d, x[i + 0], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n\n return [a, b, c, d]\n };\nconst secondChunk = (chunks, x, i) => {\n let [a, b, c, d] = chunks;\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n\n return [a, b, c, d]\n };\nconst thirdChunk = (chunks, x, i) => {\n let [a, b, c, d] = chunks;\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n\n return [a, b, c, d]\n };\nconst fourthChunk = (chunks, x, i) => {\n let [a, b, c, d] = chunks;\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n return [a, b, c, d]\n };\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\nconst binlMD5 = (x, len) => {\n /* append padding */\n x[len >> 5] |= 0x80 << (len % 32);\n x[(((len + 64) >>> 9) << 4) + 14] = len;\n let commands = [firstChunk, secondChunk, thirdChunk, fourthChunk],\n initialChunks = [\n 1732584193,\n -271733879,\n -1732584194,\n 271733878\n ];\n return Array.from({length: Math.floor(x.length / 16) + 1}, (v, i) => i * 16)\n .reduce((chunks, i) => commands\n .reduce((newChunks, apply) => apply(newChunks, x, i), chunks.slice())\n .map((chunk, index) => safeAdd(chunk, chunks[index])), initialChunks)\n\n};\n\n/*\n * Convert an array of little-endian words to a string\n */\nconst binl2rstr = input => Array(input.length * 4).fill(8).reduce((output, k, i) => output + String.fromCharCode((input[(i * k) >> 5] >>> ((i * k) % 32)) & 0xFF), '');\n\n/*\n * Convert a raw string to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\nconst rstr2binl = input => Array.from(input).map(i => i.charCodeAt(0)).reduce((output, cc, i) => {\n let resp = output.slice();\n resp[(i * 8) >> 5] |= (cc & 0xFF) << ((i * 8) % 32);\n return resp\n}, []);\n\n/*\n * Calculate the MD5 of a raw string\n */\nconst rstrMD5 = string => binl2rstr(binlMD5(rstr2binl(string), string.length * 8));\n/*\n * Calculate the HMAC-MD5, of a key and some data (raw strings)\n */\nconst strHMACMD5 = (key, data) => {\n let bkey = rstr2binl(key),\n ipad = Array(16).fill(undefined ^ 0x36363636),\n opad = Array(16).fill(undefined ^ 0x5C5C5C5C);\n\n if (bkey.length > 16) {\n bkey = binlMD5(bkey, key.length * 8);\n }\n\n bkey.forEach((k, i) => {\n ipad[i] = k ^ 0x36363636;\n opad[i] = k ^ 0x5C5C5C5C;\n });\n\n return binl2rstr(binlMD5(opad.concat(binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)), 512 + 128))\n};\n\n/*\n * Convert a raw string to a hex string\n */\nconst rstr2hex = input => {\n const hexTab = (pos) => '0123456789abcdef'.charAt(pos);\n return Array.from(input).map(c => c.charCodeAt(0)).reduce((output, x, i) => output + hexTab((x >>> 4) & 0x0F) + hexTab(x & 0x0F), '')\n};\n\n/*\n * Encode a string as utf-8\n */\n\nconst str2rstrUTF8 = unicodeString => {\n if (typeof unicodeString !== 'string') throw new TypeError('parameter ‘unicodeString’ is not a string');\n const cc = c => c.charCodeAt(0);\n return unicodeString\n .replace(/[\\u0080-\\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz\n c => String.fromCharCode(0xc0 | cc(c) >> 6, 0x80 | cc(c) & 0x3f))\n .replace(/[\\u0800-\\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz\n c => String.fromCharCode(0xe0 | cc(c) >> 12, 0x80 | cc(c) >> 6 & 0x3F, 0x80 | cc(c) & 0x3f))\n};\n\n/*\n * Take string arguments and return either raw or hex encoded strings\n */\nconst rawMD5 = s => rstrMD5(str2rstrUTF8(s));\n\nconst hexMD5 = s => rstr2hex(rawMD5(s));\n\nconst rawHMACMD5 = (k, d) => strHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));\n\nconst hexHMACMD5 = (k, d) => rstr2hex(rawHMACMD5(k, d));\n\n\nvar md5 = (string, key, raw) => {\n if (!key) {\n if (!raw) {\n return hexMD5(string)\n }\n return rawMD5(string)\n }\n if (!raw) {\n return hexHMACMD5(key, string)\n }\n return rawHMACMD5(key, string)\n};\n\nreturn md5;\n\n})));\n"]}
\ No newline at end of file
diff --git a/dist/md5.js b/dist/md5.js
new file mode 100644
index 0000000..672b1e2
--- /dev/null
+++ b/dist/md5.js
@@ -0,0 +1,314 @@
+var _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+(function (global, factory) {
+ (typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() : typeof define === 'function' && define.amd ? define(factory) : global.md5 = factory();
+})(this, function () {
+ 'use strict';
+
+ /*
+ * JavaScript MD5
+ * https://github.com/blueimp/JavaScript-MD5
+ *
+ * Copyright 2011, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * https://opensource.org/licenses/MIT
+ *
+ * Based on
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+ /*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+
+ var safeAdd = function safeAdd(x, y) {
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF);
+ return (x >> 16) + (y >> 16) + (lsw >> 16) << 16 | lsw & 0xFFFF;
+ };
+
+ /*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+ var bitRotateLeft = function bitRotateLeft(num, cnt) {
+ return num << cnt | num >>> 32 - cnt;
+ };
+
+ /*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+ var md5cmn = function md5cmn(q, a, b, x, s, t) {
+ return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);
+ };
+ var md5ff = function md5ff(a, b, c, d, x, s, t) {
+ return md5cmn(b & c | ~b & d, a, b, x, s, t);
+ };
+ var md5gg = function md5gg(a, b, c, d, x, s, t) {
+ return md5cmn(b & d | c & ~d, a, b, x, s, t);
+ };
+ var md5hh = function md5hh(a, b, c, d, x, s, t) {
+ return md5cmn(b ^ c ^ d, a, b, x, s, t);
+ };
+ var md5ii = function md5ii(a, b, c, d, x, s, t) {
+ return md5cmn(c ^ (b | ~d), a, b, x, s, t);
+ };
+
+ var firstChunk = function firstChunk(chunks, x, i) {
+ var _chunks = _slicedToArray(chunks, 4),
+ a = _chunks[0],
+ b = _chunks[1],
+ c = _chunks[2],
+ d = _chunks[3];
+
+ a = md5ff(a, b, c, d, x[i + 0], 7, -680876936);
+ d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);
+ c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);
+ b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);
+
+ a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);
+ d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);
+ c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);
+ b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);
+
+ a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);
+ d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);
+ c = md5ff(c, d, a, b, x[i + 10], 17, -42063);
+ b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);
+
+ a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);
+ d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);
+ c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);
+ b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);
+
+ return [a, b, c, d];
+ };
+ var secondChunk = function secondChunk(chunks, x, i) {
+ var _chunks2 = _slicedToArray(chunks, 4),
+ a = _chunks2[0],
+ b = _chunks2[1],
+ c = _chunks2[2],
+ d = _chunks2[3];
+
+ a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);
+ d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);
+ c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);
+ b = md5gg(b, c, d, a, x[i], 20, -373897302);
+
+ a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);
+ d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);
+ c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);
+ b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);
+
+ a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);
+ d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);
+ c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);
+ b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);
+
+ a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);
+ d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);
+ c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);
+ b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);
+
+ return [a, b, c, d];
+ };
+ var thirdChunk = function thirdChunk(chunks, x, i) {
+ var _chunks3 = _slicedToArray(chunks, 4),
+ a = _chunks3[0],
+ b = _chunks3[1],
+ c = _chunks3[2],
+ d = _chunks3[3];
+
+ a = md5hh(a, b, c, d, x[i + 5], 4, -378558);
+ d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);
+ c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);
+ b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);
+
+ a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);
+ d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);
+ c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);
+ b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);
+
+ a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);
+ d = md5hh(d, a, b, c, x[i], 11, -358537222);
+ c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);
+ b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);
+
+ a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);
+ d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);
+ c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);
+ b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);
+
+ return [a, b, c, d];
+ };
+ var fourthChunk = function fourthChunk(chunks, x, i) {
+ var _chunks4 = _slicedToArray(chunks, 4),
+ a = _chunks4[0],
+ b = _chunks4[1],
+ c = _chunks4[2],
+ d = _chunks4[3];
+
+ a = md5ii(a, b, c, d, x[i], 6, -198630844);
+ d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);
+ c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);
+ b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);
+
+ a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);
+ d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);
+ c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);
+ b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);
+
+ a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);
+ d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);
+ c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);
+ b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);
+
+ a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);
+ d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);
+ c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);
+ b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);
+ return [a, b, c, d];
+ };
+ /*
+ * Calculate the MD5 of an array of little-endian words, and a bit length.
+ */
+ var binlMD5 = function binlMD5(x, len) {
+ /* append padding */
+ x[len >> 5] |= 0x80 << len % 32;
+ x[(len + 64 >>> 9 << 4) + 14] = len;
+ var commands = [firstChunk, secondChunk, thirdChunk, fourthChunk],
+ initialChunks = [1732584193, -271733879, -1732584194, 271733878];
+ return Array.from({ length: Math.floor(x.length / 16) + 1 }, function (v, i) {
+ return i * 16;
+ }).reduce(function (chunks, i) {
+ return commands.reduce(function (newChunks, apply) {
+ return apply(newChunks, x, i);
+ }, chunks.slice()).map(function (chunk, index) {
+ return safeAdd(chunk, chunks[index]);
+ });
+ }, initialChunks);
+ };
+
+ /*
+ * Convert an array of little-endian words to a string
+ */
+ var binl2rstr = function binl2rstr(input) {
+ return Array(input.length * 4).fill(8).reduce(function (output, k, i) {
+ return output + String.fromCharCode(input[i * k >> 5] >>> i * k % 32 & 0xFF);
+ }, '');
+ };
+
+ /*
+ * Convert a raw string to an array of little-endian words
+ * Characters >255 have their high-byte silently ignored.
+ */
+ var rstr2binl = function rstr2binl(input) {
+ return Array.from(input).map(function (i) {
+ return i.charCodeAt(0);
+ }).reduce(function (output, cc, i) {
+ var resp = output.slice();
+ resp[i * 8 >> 5] |= (cc & 0xFF) << i * 8 % 32;
+ return resp;
+ }, []);
+ };
+
+ /*
+ * Calculate the MD5 of a raw string
+ */
+ var rstrMD5 = function rstrMD5(string) {
+ return binl2rstr(binlMD5(rstr2binl(string), string.length * 8));
+ };
+ /*
+ * Calculate the HMAC-MD5, of a key and some data (raw strings)
+ */
+ var strHMACMD5 = function strHMACMD5(key, data) {
+ var bkey = rstr2binl(key),
+ ipad = Array(16).fill(undefined ^ 0x36363636),
+ opad = Array(16).fill(undefined ^ 0x5C5C5C5C);
+
+ if (bkey.length > 16) {
+ bkey = binlMD5(bkey, key.length * 8);
+ }
+
+ bkey.forEach(function (k, i) {
+ ipad[i] = k ^ 0x36363636;
+ opad[i] = k ^ 0x5C5C5C5C;
+ });
+
+ return binl2rstr(binlMD5(opad.concat(binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8)), 512 + 128));
+ };
+
+ /*
+ * Convert a raw string to a hex string
+ */
+ var rstr2hex = function rstr2hex(input) {
+ var hexTab = function hexTab(pos) {
+ return '0123456789abcdef'.charAt(pos);
+ };
+ return Array.from(input).map(function (c) {
+ return c.charCodeAt(0);
+ }).reduce(function (output, x, i) {
+ return output + hexTab(x >>> 4 & 0x0F) + hexTab(x & 0x0F);
+ }, '');
+ };
+
+ /*
+ * Encode a string as utf-8
+ */
+
+ var str2rstrUTF8 = function str2rstrUTF8(unicodeString) {
+ if (typeof unicodeString !== 'string') throw new TypeError('parameter ‘unicodeString’ is not a string');
+ var cc = function cc(c) {
+ return c.charCodeAt(0);
+ };
+ return unicodeString.replace(/[\u0080-\u07ff]/g, // U+0080 - U+07FF => 2 bytes 110yyyyy, 10zzzzzz
+ function (c) {
+ return String.fromCharCode(0xc0 | cc(c) >> 6, 0x80 | cc(c) & 0x3f);
+ }).replace(/[\u0800-\uffff]/g, // U+0800 - U+FFFF => 3 bytes 1110xxxx, 10yyyyyy, 10zzzzzz
+ function (c) {
+ return String.fromCharCode(0xe0 | cc(c) >> 12, 0x80 | cc(c) >> 6 & 0x3F, 0x80 | cc(c) & 0x3f);
+ });
+ };
+
+ /*
+ * Take string arguments and return either raw or hex encoded strings
+ */
+ var rawMD5 = function rawMD5(s) {
+ return rstrMD5(str2rstrUTF8(s));
+ };
+
+ var hexMD5 = function hexMD5(s) {
+ return rstr2hex(rawMD5(s));
+ };
+
+ var rawHMACMD5 = function rawHMACMD5(k, d) {
+ return strHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d));
+ };
+
+ var hexHMACMD5 = function hexHMACMD5(k, d) {
+ return rstr2hex(rawHMACMD5(k, d));
+ };
+
+ var md5 = function md5(string, key, raw) {
+ if (!key) {
+ if (!raw) {
+ return hexMD5(string);
+ }
+ return rawMD5(string);
+ }
+ if (!raw) {
+ return hexHMACMD5(key, string);
+ }
+ return rawHMACMD5(key, string);
+ };
+
+ return md5;
+});
diff --git a/dist/md5.min.js b/dist/md5.min.js
new file mode 100644
index 0000000..9a830b5
--- /dev/null
+++ b/dist/md5.min.js
@@ -0,0 +1,2 @@
+var _slicedToArray=function(){function r(r,n){var t=[],e=!0,o=!1,u=void 0;try{for(var f,i=r[Symbol.iterator]();!(e=(f=i.next()).done)&&(t.push(f.value),!n||t.length!==n);e=!0);}catch(r){o=!0,u=r}finally{try{!e&&i.return&&i.return()}finally{if(o)throw u}}return t}return function(n,t){if(Array.isArray(n))return n;if(Symbol.iterator in Object(n))return r(n,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(r){return typeof r}:function(r){return r&&"function"==typeof Symbol&&r.constructor===Symbol&&r!==Symbol.prototype?"symbol":typeof r};!function(r,n){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=n():"function"==typeof define&&define.amd?define(n):r.md5=n()}(this,function(){"use strict";var r=function(r,n){var t=(65535&r)+(65535&n);return(r>>16)+(n>>16)+(t>>16)<<16|65535&t},n=function(r,n){return r<>>32-n},t=function(t,e,o,u,f,i){return r(n(r(r(e,t),r(u,i)),f),o)},e=function(r,n,e,o,u,f,i){return t(n&e|~n&o,r,n,u,f,i)},o=function(r,n,e,o,u,f,i){return t(n&o|e&~o,r,n,u,f,i)},u=function(r,n,e,o,u,f,i){return t(n^e^o,r,n,u,f,i)},f=function(r,n,e,o,u,f,i){return t(e^(n|~o),r,n,u,f,i)},i=function(r,n,t){var o=_slicedToArray(r,4),u=o[0],f=o[1],i=o[2],c=o[3];return u=e(u,f,i,c,n[t+0],7,-680876936),c=e(c,u,f,i,n[t+1],12,-389564586),i=e(i,c,u,f,n[t+2],17,606105819),f=e(f,i,c,u,n[t+3],22,-1044525330),u=e(u,f,i,c,n[t+4],7,-176418897),c=e(c,u,f,i,n[t+5],12,1200080426),i=e(i,c,u,f,n[t+6],17,-1473231341),f=e(f,i,c,u,n[t+7],22,-45705983),u=e(u,f,i,c,n[t+8],7,1770035416),c=e(c,u,f,i,n[t+9],12,-1958414417),i=e(i,c,u,f,n[t+10],17,-42063),f=e(f,i,c,u,n[t+11],22,-1990404162),u=e(u,f,i,c,n[t+12],7,1804603682),c=e(c,u,f,i,n[t+13],12,-40341101),i=e(i,c,u,f,n[t+14],17,-1502002290),f=e(f,i,c,u,n[t+15],22,1236535329),[u,f,i,c]},c=function(r,n,t){var e=_slicedToArray(r,4),u=e[0],f=e[1],i=e[2],c=e[3];return u=o(u,f,i,c,n[t+1],5,-165796510),c=o(c,u,f,i,n[t+6],9,-1069501632),i=o(i,c,u,f,n[t+11],14,643717713),f=o(f,i,c,u,n[t],20,-373897302),u=o(u,f,i,c,n[t+5],5,-701558691),c=o(c,u,f,i,n[t+10],9,38016083),i=o(i,c,u,f,n[t+15],14,-660478335),f=o(f,i,c,u,n[t+4],20,-405537848),u=o(u,f,i,c,n[t+9],5,568446438),c=o(c,u,f,i,n[t+14],9,-1019803690),i=o(i,c,u,f,n[t+3],14,-187363961),f=o(f,i,c,u,n[t+8],20,1163531501),u=o(u,f,i,c,n[t+13],5,-1444681467),c=o(c,u,f,i,n[t+2],9,-51403784),i=o(i,c,u,f,n[t+7],14,1735328473),f=o(f,i,c,u,n[t+12],20,-1926607734),[u,f,i,c]},a=function(r,n,t){var e=_slicedToArray(r,4),o=e[0],f=e[1],i=e[2],c=e[3];return o=u(o,f,i,c,n[t+5],4,-378558),c=u(c,o,f,i,n[t+8],11,-2022574463),i=u(i,c,o,f,n[t+11],16,1839030562),f=u(f,i,c,o,n[t+14],23,-35309556),o=u(o,f,i,c,n[t+1],4,-1530992060),c=u(c,o,f,i,n[t+4],11,1272893353),i=u(i,c,o,f,n[t+7],16,-155497632),f=u(f,i,c,o,n[t+10],23,-1094730640),o=u(o,f,i,c,n[t+13],4,681279174),c=u(c,o,f,i,n[t],11,-358537222),i=u(i,c,o,f,n[t+3],16,-722521979),f=u(f,i,c,o,n[t+6],23,76029189),o=u(o,f,i,c,n[t+9],4,-640364487),c=u(c,o,f,i,n[t+12],11,-421815835),i=u(i,c,o,f,n[t+15],16,530742520),f=u(f,i,c,o,n[t+2],23,-995338651),[o,f,i,c]},l=function(r,n,t){var e=_slicedToArray(r,4),o=e[0],u=e[1],i=e[2],c=e[3];return o=f(o,u,i,c,n[t],6,-198630844),c=f(c,o,u,i,n[t+7],10,1126891415),i=f(i,c,o,u,n[t+14],15,-1416354905),u=f(u,i,c,o,n[t+5],21,-57434055),o=f(o,u,i,c,n[t+12],6,1700485571),c=f(c,o,u,i,n[t+3],10,-1894986606),i=f(i,c,o,u,n[t+10],15,-1051523),u=f(u,i,c,o,n[t+1],21,-2054922799),o=f(o,u,i,c,n[t+8],6,1873313359),c=f(c,o,u,i,n[t+15],10,-30611744),i=f(i,c,o,u,n[t+6],15,-1560198380),u=f(u,i,c,o,n[t+13],21,1309151649),o=f(o,u,i,c,n[t+4],6,-145523070),c=f(c,o,u,i,n[t+11],10,-1120210379),i=f(i,c,o,u,n[t+2],15,718787259),u=f(u,i,c,o,n[t+9],21,-343485551),[o,u,i,c]},y=function(n,t){n[t>>5]|=128<>>9<<4)+14]=t;var e=[i,c,a,l],o=[1732584193,-271733879,-1732584194,271733878];return Array.from({length:Math.floor(n.length/16)+1},function(r,n){return 16*n}).reduce(function(t,o){return e.reduce(function(r,t){return t(r,n,o)},t.slice()).map(function(n,e){return r(n,t[e])})},o)},d=function(r){return Array(4*r.length).fill(8).reduce(function(n,t,e){return n+String.fromCharCode(r[e*t>>5]>>>e*t%32&255)},"")},p=function(r){return Array.from(r).map(function(r){return r.charCodeAt(0)}).reduce(function(r,n,t){var e=r.slice();return e[8*t>>5]|=(255&n)<<8*t%32,e},[])},m=function(r){return d(y(p(r),8*r.length))},h=function(r,n){var t=p(r),e=Array(16).fill(909522486),o=Array(16).fill(1549556828);return t.length>16&&(t=y(t,8*r.length)),t.forEach(function(r,n){e[n]=909522486^r,o[n]=1549556828^r}),d(y(o.concat(y(e.concat(p(n)),512+8*n.length)),640))},s=function(r){var n=function(r){return"0123456789abcdef".charAt(r)};return Array.from(r).map(function(r){return r.charCodeAt(0)}).reduce(function(r,t,e){return r+n(t>>>4&15)+n(15&t)},"")},v=function(r){if("string"!=typeof r)throw new TypeError("parameter ‘unicodeString’ is not a string");var n=function(r){return r.charCodeAt(0)};return r.replace(/[\u0080-\u07ff]/g,function(r){return String.fromCharCode(192|n(r)>>6,128|63&n(r))}).replace(/[\u0800-\uffff]/g,function(r){return String.fromCharCode(224|n(r)>>12,128|n(r)>>6&63,128|63&n(r))})},A=function(r){return m(v(r))},g=function(r){return s(A(r))},b=function(r,n){return h(v(r),v(n))},S=function(r,n){return s(b(r,n))},C=function(r,n,t){return n?t?b(n,r):S(n,r):t?A(r):g(r)};return C});
+//# sourceMappingURL=dist/md5.min.js.map
\ No newline at end of file
diff --git a/dist/md5.min.js.map b/dist/md5.min.js.map
new file mode 100644
index 0000000..6936135
--- /dev/null
+++ b/dist/md5.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["dist/md5.js"],"names":["_slicedToArray","sliceIterator","arr","i","_arr","_n","_d","_e","undefined","_s","_i","Symbol","iterator","next","done","push","value","length","err","Array","isArray","Object","TypeError","_typeof","obj","constructor","prototype","global","factory","exports","module","define","amd","md5","this","safeAdd","x","y","lsw","bitRotateLeft","num","cnt","md5cmn","q","a","b","s","t","md5ff","c","d","md5gg","md5hh","md5ii","firstChunk","chunks","_chunks","secondChunk","_chunks2","thirdChunk","_chunks3","fourthChunk","_chunks4","binlMD5","len","commands","initialChunks","from","Math","floor","v","reduce","newChunks","apply","slice","map","chunk","index","binl2rstr","input","fill","output","k","String","fromCharCode","rstr2binl","charCodeAt","cc","resp","rstrMD5","string","strHMACMD5","key","data","bkey","ipad","opad","forEach","concat","rstr2hex","hexTab","pos","charAt","str2rstrUTF8","unicodeString","replace","rawMD5","hexMD5","rawHMACMD5","hexHMACMD5","raw"],"mappings":"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","file":"dist/md5.min.js"}
\ No newline at end of file
diff --git a/index.html b/index.html
index 3f966bd..8fe080a 100644
--- a/index.html
+++ b/index.html
@@ -43,7 +43,7 @@ Result
-
+