github.com/jincm/wesharechain@v0.0.0-20210122032815-1537409ce26a/app/lib/crypto1/md5/md5.js (about) 1 /*! 2 * Crypto-JS v1.1.0 3 * http://code.google.com/p/crypto-js/ 4 * Copyright (c) 2009, Jeff Mott. All rights reserved. 5 * http://code.google.com/p/crypto-js/wiki/License 6 */ 7 (function(){ 8 9 // Shortcut 10 var util = Crypto.util; 11 12 // Public API 13 var MD5 = Crypto.MD5 = function (message, options) { 14 var digestbytes = util.wordsToBytes(MD5._md5(message)); 15 return options && options.asBytes ? digestbytes : 16 options && options.asString ? util.bytesToString(digestbytes) : 17 util.bytesToHex(digestbytes); 18 }; 19 20 // The core 21 MD5._md5 = function (message) { 22 23 var m = util.stringToWords(message), 24 l = message.length * 8, 25 a = 1732584193, 26 b = -271733879, 27 c = -1732584194, 28 d = 271733878; 29 30 // Swap endian 31 for (var i = 0; i < m.length; i++) { 32 m[i] = ((m[i] << 8) | (m[i] >>> 24)) & 0x00FF00FF | 33 ((m[i] << 24) | (m[i] >>> 8)) & 0xFF00FF00; 34 } 35 36 // Padding 37 m[l >>> 5] |= 0x80 << (l % 32); 38 m[(((l + 64) >>> 9) << 4) + 14] = l; 39 40 for (var i = 0; i < m.length; i += 16) { 41 42 var aa = a, 43 bb = b, 44 cc = c, 45 dd = d; 46 47 a = MD5._ff(a, b, c, d, m[i+ 0], 7, -680876936); 48 d = MD5._ff(d, a, b, c, m[i+ 1], 12, -389564586); 49 c = MD5._ff(c, d, a, b, m[i+ 2], 17, 606105819); 50 b = MD5._ff(b, c, d, a, m[i+ 3], 22, -1044525330); 51 a = MD5._ff(a, b, c, d, m[i+ 4], 7, -176418897); 52 d = MD5._ff(d, a, b, c, m[i+ 5], 12, 1200080426); 53 c = MD5._ff(c, d, a, b, m[i+ 6], 17, -1473231341); 54 b = MD5._ff(b, c, d, a, m[i+ 7], 22, -45705983); 55 a = MD5._ff(a, b, c, d, m[i+ 8], 7, 1770035416); 56 d = MD5._ff(d, a, b, c, m[i+ 9], 12, -1958414417); 57 c = MD5._ff(c, d, a, b, m[i+10], 17, -42063); 58 b = MD5._ff(b, c, d, a, m[i+11], 22, -1990404162); 59 a = MD5._ff(a, b, c, d, m[i+12], 7, 1804603682); 60 d = MD5._ff(d, a, b, c, m[i+13], 12, -40341101); 61 c = MD5._ff(c, d, a, b, m[i+14], 17, -1502002290); 62 b = MD5._ff(b, c, d, a, m[i+15], 22, 1236535329); 63 64 a = MD5._gg(a, b, c, d, m[i+ 1], 5, -165796510); 65 d = MD5._gg(d, a, b, c, m[i+ 6], 9, -1069501632); 66 c = MD5._gg(c, d, a, b, m[i+11], 14, 643717713); 67 b = MD5._gg(b, c, d, a, m[i+ 0], 20, -373897302); 68 a = MD5._gg(a, b, c, d, m[i+ 5], 5, -701558691); 69 d = MD5._gg(d, a, b, c, m[i+10], 9, 38016083); 70 c = MD5._gg(c, d, a, b, m[i+15], 14, -660478335); 71 b = MD5._gg(b, c, d, a, m[i+ 4], 20, -405537848); 72 a = MD5._gg(a, b, c, d, m[i+ 9], 5, 568446438); 73 d = MD5._gg(d, a, b, c, m[i+14], 9, -1019803690); 74 c = MD5._gg(c, d, a, b, m[i+ 3], 14, -187363961); 75 b = MD5._gg(b, c, d, a, m[i+ 8], 20, 1163531501); 76 a = MD5._gg(a, b, c, d, m[i+13], 5, -1444681467); 77 d = MD5._gg(d, a, b, c, m[i+ 2], 9, -51403784); 78 c = MD5._gg(c, d, a, b, m[i+ 7], 14, 1735328473); 79 b = MD5._gg(b, c, d, a, m[i+12], 20, -1926607734); 80 81 a = MD5._hh(a, b, c, d, m[i+ 5], 4, -378558); 82 d = MD5._hh(d, a, b, c, m[i+ 8], 11, -2022574463); 83 c = MD5._hh(c, d, a, b, m[i+11], 16, 1839030562); 84 b = MD5._hh(b, c, d, a, m[i+14], 23, -35309556); 85 a = MD5._hh(a, b, c, d, m[i+ 1], 4, -1530992060); 86 d = MD5._hh(d, a, b, c, m[i+ 4], 11, 1272893353); 87 c = MD5._hh(c, d, a, b, m[i+ 7], 16, -155497632); 88 b = MD5._hh(b, c, d, a, m[i+10], 23, -1094730640); 89 a = MD5._hh(a, b, c, d, m[i+13], 4, 681279174); 90 d = MD5._hh(d, a, b, c, m[i+ 0], 11, -358537222); 91 c = MD5._hh(c, d, a, b, m[i+ 3], 16, -722521979); 92 b = MD5._hh(b, c, d, a, m[i+ 6], 23, 76029189); 93 a = MD5._hh(a, b, c, d, m[i+ 9], 4, -640364487); 94 d = MD5._hh(d, a, b, c, m[i+12], 11, -421815835); 95 c = MD5._hh(c, d, a, b, m[i+15], 16, 530742520); 96 b = MD5._hh(b, c, d, a, m[i+ 2], 23, -995338651); 97 98 a = MD5._ii(a, b, c, d, m[i+ 0], 6, -198630844); 99 d = MD5._ii(d, a, b, c, m[i+ 7], 10, 1126891415); 100 c = MD5._ii(c, d, a, b, m[i+14], 15, -1416354905); 101 b = MD5._ii(b, c, d, a, m[i+ 5], 21, -57434055); 102 a = MD5._ii(a, b, c, d, m[i+12], 6, 1700485571); 103 d = MD5._ii(d, a, b, c, m[i+ 3], 10, -1894986606); 104 c = MD5._ii(c, d, a, b, m[i+10], 15, -1051523); 105 b = MD5._ii(b, c, d, a, m[i+ 1], 21, -2054922799); 106 a = MD5._ii(a, b, c, d, m[i+ 8], 6, 1873313359); 107 d = MD5._ii(d, a, b, c, m[i+15], 10, -30611744); 108 c = MD5._ii(c, d, a, b, m[i+ 6], 15, -1560198380); 109 b = MD5._ii(b, c, d, a, m[i+13], 21, 1309151649); 110 a = MD5._ii(a, b, c, d, m[i+ 4], 6, -145523070); 111 d = MD5._ii(d, a, b, c, m[i+11], 10, -1120210379); 112 c = MD5._ii(c, d, a, b, m[i+ 2], 15, 718787259); 113 b = MD5._ii(b, c, d, a, m[i+ 9], 21, -343485551); 114 115 a += aa; 116 b += bb; 117 c += cc; 118 d += dd; 119 120 } 121 122 return util.endian([a, b, c, d]); 123 124 }; 125 126 // Auxiliary functions 127 MD5._ff = function (a, b, c, d, x, s, t) { 128 var n = a + (b & c | ~b & d) + (x >>> 0) + t; 129 return ((n << s) | (n >>> (32 - s))) + b; 130 }; 131 MD5._gg = function (a, b, c, d, x, s, t) { 132 var n = a + (b & d | c & ~d) + (x >>> 0) + t; 133 return ((n << s) | (n >>> (32 - s))) + b; 134 }; 135 MD5._hh = function (a, b, c, d, x, s, t) { 136 var n = a + (b ^ c ^ d) + (x >>> 0) + t; 137 return ((n << s) | (n >>> (32 - s))) + b; 138 }; 139 MD5._ii = function (a, b, c, d, x, s, t) { 140 var n = a + (c ^ (b | ~d)) + (x >>> 0) + t; 141 return ((n << s) | (n >>> (32 - s))) + b; 142 }; 143 144 // Package private blocksize 145 MD5._blocksize = 16; 146 147 })();