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


- + diff --git a/js/md5.js b/js/md5.js index 2d434b6..d10c0a3 100644 --- a/js/md5.js +++ b/js/md5.js @@ -17,265 +17,227 @@ * See http://pajhome.org.uk/crypt/md5 for more info. */ -/* global define */ - -;(function ($) { - 'use strict' - - /* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ - function safeAdd (x, y) { - var lsw = (x & 0xFFFF) + (y & 0xFFFF) - var msw = (x >> 16) + (y >> 16) + (lsw >> 16) - return (msw << 16) | (lsw & 0xFFFF) - } +/* + * 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. - */ - function bitRotateLeft (num, cnt) { - return (num << cnt) | (num >>> (32 - cnt)) - } +/* + * 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. - */ - function md5cmn (q, a, b, x, s, t) { - return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b) - } - function md5ff (a, b, c, d, x, s, t) { - return md5cmn((b & c) | ((~b) & d), a, b, x, s, t) - } - function md5gg (a, b, c, d, x, s, t) { - return md5cmn((b & d) | (c & (~d)), a, b, x, s, t) - } - function md5hh (a, b, c, d, x, s, t) { - return md5cmn(b ^ c ^ d, a, b, x, s, t) - } - function md5ii (a, b, c, d, x, s, t) { - return md5cmn(c ^ (b | (~d)), a, b, x, s, t) - } +/* + * 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), + md5ff = (a, b, c, d, x, s, t) => md5cmn((b & c) | ((~b) & d), a, b, x, s, t), + md5gg = (a, b, c, d, x, s, t) => md5cmn((b & d) | (c & (~d)), a, b, x, s, t), + md5hh = (a, b, c, d, x, s, t) => md5cmn(b ^ c ^ d, a, b, x, s, t), + 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) - /* - * Calculate the MD5 of an array of little-endian words, and a bit length. - */ - function binlMD5 (x, len) { - /* append padding */ - x[len >> 5] |= 0x80 << (len % 32) - x[(((len + 64) >>> 9) << 4) + 14] = len - - var i - var olda - var oldb - var oldc - var oldd - var a = 1732584193 - var b = -271733879 - var c = -1732584194 - var d = 271733878 - - for (i = 0; i < x.length; i += 16) { - olda = a - oldb = b - oldc = c - oldd = d - - a = md5ff(a, b, c, d, x[i], 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) - - 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) - - 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) - - 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) - - a = safeAdd(a, olda) - b = safeAdd(b, oldb) - c = safeAdd(c, oldc) - d = safeAdd(d, oldd) - } return [a, b, c, d] - } + }, + 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) - /* - * Convert an array of little-endian words to a string - */ - function binl2rstr (input) { - var i - var output = '' - var length32 = input.length * 32 - for (i = 0; i < length32; i += 8) { - output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF) - } - return output - } + return [a, b, c, d] + }, + 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) - /* - * Convert a raw string to an array of little-endian words - * Characters >255 have their high-byte silently ignored. - */ - function rstr2binl (input) { - var i - var output = [] - output[(input.length >> 2) - 1] = undefined - for (i = 0; i < output.length; i += 1) { - output[i] = 0 - } - var length8 = input.length * 8 - for (i = 0; i < length8; i += 8) { - output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32) - } - return output + return [a, b, c, d] + }, + 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) + +} - /* - * Calculate the MD5 of a raw string - */ - function rstrMD5 (s) { - return binl2rstr(binlMD5(rstr2binl(s), s.length * 8)) - } +/* + * 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), '') - /* - * Calculate the HMAC-MD5, of a key and some data (raw strings) - */ - function rstrHMACMD5 (key, data) { - var i - var bkey = rstr2binl(key) - var ipad = [] - var opad = [] - var hash - ipad[15] = opad[15] = undefined - if (bkey.length > 16) { - bkey = binlMD5(bkey, key.length * 8) - } - for (i = 0; i < 16; i += 1) { - ipad[i] = bkey[i] ^ 0x36363636 - opad[i] = bkey[i] ^ 0x5C5C5C5C - } - hash = binlMD5(ipad.concat(rstr2binl(data)), 512 + data.length * 8) - return binl2rstr(binlMD5(opad.concat(hash), 512 + 128)) - } +/* + * 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 +}, []) - /* - * Convert a raw string to a hex string - */ - function rstr2hex (input) { - var hexTab = '0123456789abcdef' - var output = '' - var x - var i - for (i = 0; i < input.length; i += 1) { - x = input.charCodeAt(i) - output += hexTab.charAt((x >>> 4) & 0x0F) + - hexTab.charAt(x & 0x0F) - } - return output - } +/* + * 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) - /* - * Encode a string as utf-8 - */ - function str2rstrUTF8 (input) { - return unescape(encodeURIComponent(input)) + if (bkey.length > 16) { + bkey = binlMD5(bkey, key.length * 8) } - /* - * Take string arguments and return either raw or hex encoded strings - */ - function rawMD5 (s) { - return rstrMD5(str2rstrUTF8(s)) - } - function hexMD5 (s) { - return rstr2hex(rawMD5(s)) - } - function rawHMACMD5 (k, d) { - return rstrHMACMD5(str2rstrUTF8(k), str2rstrUTF8(d)) - } - function hexHMACMD5 (k, d) { - return rstr2hex(rawHMACMD5(k, d)) - } + bkey.forEach((k, i) => { + ipad[i] = k ^ 0x36363636 + opad[i] = k ^ 0x5C5C5C5C + }) - function md5 (string, key, raw) { - if (!key) { - if (!raw) { - return hexMD5(string) - } - return rawMD5(string) - } + 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)) + + +export default (string, key, raw) => { + if (!key) { if (!raw) { - return hexHMACMD5(key, string) + return hexMD5(string) } - return rawHMACMD5(key, string) + return rawMD5(string) } - - if (typeof define === 'function' && define.amd) { - define(function () { - return md5 - }) - } else if (typeof module === 'object' && module.exports) { - module.exports = md5 - } else { - $.md5 = md5 + if (!raw) { + return hexHMACMD5(key, string) } -}(this)) + return rawHMACMD5(key, string) +} diff --git a/js/md5.min.js b/js/md5.min.js deleted file mode 100644 index 564e1e0..0000000 --- a/js/md5.min.js +++ /dev/null @@ -1,2 +0,0 @@ -!function(n){"use strict";function t(n,t){var r=(65535&n)+(65535&t),e=(n>>16)+(t>>16)+(r>>16);return e<<16|65535&r}function r(n,t){return n<>>32-t}function e(n,e,o,u,c,f){return t(r(t(t(e,n),t(u,f)),c),o)}function o(n,t,r,o,u,c,f){return e(t&r|~t&o,n,t,u,c,f)}function u(n,t,r,o,u,c,f){return e(t&o|r&~o,n,t,u,c,f)}function c(n,t,r,o,u,c,f){return e(t^r^o,n,t,u,c,f)}function f(n,t,r,o,u,c,f){return e(r^(t|~o),n,t,u,c,f)}function i(n,r){n[r>>5]|=128<>>9<<4)+14]=r;var e,i,a,h,d,l=1732584193,g=-271733879,v=-1732584194,m=271733878;for(e=0;e>5]>>>t%32&255);return r}function h(n){var t,r=[];for(r[(n.length>>2)-1]=void 0,t=0;t>5]|=(255&n.charCodeAt(t/8))<16&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}function g(n){var t,r,e="0123456789abcdef",o="";for(r=0;r>>4&15)+e.charAt(15&t);return o}function v(n){return unescape(encodeURIComponent(n))}function m(n){return d(v(n))}function p(n){return g(m(n))}function s(n,t){return l(v(n),v(t))}function C(n,t){return g(s(n,t))}function A(n,t,r){return t?r?s(t,n):C(t,n):r?m(n):p(n)}"function"==typeof define&&define.amd?define(function(){return A}):"object"==typeof module&&module.exports?module.exports=A:n.md5=A}(this); -//# sourceMappingURL=md5.min.js.map \ No newline at end of file diff --git a/js/md5.min.js.map b/js/md5.min.js.map deleted file mode 100644 index ea64044..0000000 --- a/js/md5.min.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["md5.js"],"names":["$","safeAdd","x","y","lsw","msw","bitRotateLeft","num","cnt","md5cmn","q","a","b","s","t","md5ff","c","d","md5gg","md5hh","md5ii","binlMD5","len","i","olda","oldb","oldc","oldd","length","binl2rstr","input","output","length32","String","fromCharCode","rstr2binl","undefined","length8","charCodeAt","rstrMD5","rstrHMACMD5","key","data","hash","bkey","ipad","opad","concat","rstr2hex","hexTab","charAt","str2rstrUTF8","unescape","encodeURIComponent","rawMD5","hexMD5","rawHMACMD5","k","hexHMACMD5","md5","string","raw","define","amd","module","exports","this"],"mappings":"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","file":"md5.min.js"} \ No newline at end of file diff --git a/package.json b/package.json index a1f720a..da4dc29 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,14 @@ { - "name": "blueimp-md5", - "version": "2.7.0", + "name": "blueimp-md5-es6", + "version": "2.7.4", "title": "JavaScript MD5", "description": "JavaScript MD5 implementation. Compatible with server-side environments like Node.js, module loaders like RequireJS, Browserify or webpack and all web browsers.", "keywords": [ "javascript", - "md5" + "md5", + "es6" ], - "homepage": "https://github.com/blueimp/JavaScript-MD5", + "homepage": "https://github.com/gunins/JavaScript-MD5", "author": { "name": "Sebastian Tschan", "url": "https://blueimp.net" @@ -20,23 +21,29 @@ ], "repository": { "type": "git", - "url": "git://github.com/blueimp/JavaScript-MD5.git" + "url": "git://github.com/gunins/JavaScript-MD5.git" }, "license": "MIT", "devDependencies": { + "babel-cli": "^6.26.0", + "babel-preset-es2015": "^6.24.1", + "babili": "^0.1.4", "chai": "3.5.0", "mocha": "3.1.0", - "standard": "8.3.0", + "rollup": "0.50.0", "uglify-js": "2.7.3" }, "scripts": { - "lint": "standard js/*.js test/*.js", "unit": "mocha", - "test": "npm run lint && npm run unit", - "build": "cd js && uglifyjs md5.js -c -m -o md5.min.js --source-map md5.min.js.map", + "test": "npm run unit", + "rollup": "rollup js/md5.js --format umd --name md5 --output dist/es6/md5.js", + "babel": "babel dist/es6/md5.js --out-file dist/md5.js", + "compressES6": "babili dist/es6/md5.js --out-file dist/es6/md5.min.js --source-maps", + "compressES5": "uglifyjs dist/md5.js -c -m -o dist/md5.min.js --source-map dist/md5.min.js.map", + "build": "npm run rollup && npm run babel && npm run compressES6 && npm run compressES5", "preversion": "npm test", "version": "npm run build && git add -A js", - "postversion": "git push --tags origin master master:gh-pages && npm publish" + "postversion": "git push --tags origin master && npm publish" }, - "main": "js/md5.js" + "main": "dist/es6/md5.js" } diff --git a/test/index.html b/test/index.html index 9a21d7b..1dec6f2 100644 --- a/test/index.html +++ b/test/index.html @@ -28,7 +28,7 @@ - +