1// http://www.myersdaily.org/joseph/javascript/md5.js 2function MD5_md5cycle(x, k) { 3 var a = x[0], b = x[1], c = x[2], d = x[3]; 4 5 a = MD5_ff(a, b, c, d, k[0], 7, -680876936); 6 d = MD5_ff(d, a, b, c, k[1], 12, -389564586); 7 c = MD5_ff(c, d, a, b, k[2], 17, 606105819); 8 b = MD5_ff(b, c, d, a, k[3], 22, -1044525330); 9 a = MD5_ff(a, b, c, d, k[4], 7, -176418897); 10 d = MD5_ff(d, a, b, c, k[5], 12, 1200080426); 11 c = MD5_ff(c, d, a, b, k[6], 17, -1473231341); 12 b = MD5_ff(b, c, d, a, k[7], 22, -45705983); 13 a = MD5_ff(a, b, c, d, k[8], 7, 1770035416); 14 d = MD5_ff(d, a, b, c, k[9], 12, -1958414417); 15 c = MD5_ff(c, d, a, b, k[10], 17, -42063); 16 b = MD5_ff(b, c, d, a, k[11], 22, -1990404162); 17 a = MD5_ff(a, b, c, d, k[12], 7, 1804603682); 18 d = MD5_ff(d, a, b, c, k[13], 12, -40341101); 19 c = MD5_ff(c, d, a, b, k[14], 17, -1502002290); 20 b = MD5_ff(b, c, d, a, k[15], 22, 1236535329); 21 22 a = MD5_gg(a, b, c, d, k[1], 5, -165796510); 23 d = MD5_gg(d, a, b, c, k[6], 9, -1069501632); 24 c = MD5_gg(c, d, a, b, k[11], 14, 643717713); 25 b = MD5_gg(b, c, d, a, k[0], 20, -373897302); 26 a = MD5_gg(a, b, c, d, k[5], 5, -701558691); 27 d = MD5_gg(d, a, b, c, k[10], 9, 38016083); 28 c = MD5_gg(c, d, a, b, k[15], 14, -660478335); 29 b = MD5_gg(b, c, d, a, k[4], 20, -405537848); 30 a = MD5_gg(a, b, c, d, k[9], 5, 568446438); 31 d = MD5_gg(d, a, b, c, k[14], 9, -1019803690); 32 c = MD5_gg(c, d, a, b, k[3], 14, -187363961); 33 b = MD5_gg(b, c, d, a, k[8], 20, 1163531501); 34 a = MD5_gg(a, b, c, d, k[13], 5, -1444681467); 35 d = MD5_gg(d, a, b, c, k[2], 9, -51403784); 36 c = MD5_gg(c, d, a, b, k[7], 14, 1735328473); 37 b = MD5_gg(b, c, d, a, k[12], 20, -1926607734); 38 39 a = MD5_hh(a, b, c, d, k[5], 4, -378558); 40 d = MD5_hh(d, a, b, c, k[8], 11, -2022574463); 41 c = MD5_hh(c, d, a, b, k[11], 16, 1839030562); 42 b = MD5_hh(b, c, d, a, k[14], 23, -35309556); 43 a = MD5_hh(a, b, c, d, k[1], 4, -1530992060); 44 d = MD5_hh(d, a, b, c, k[4], 11, 1272893353); 45 c = MD5_hh(c, d, a, b, k[7], 16, -155497632); 46 b = MD5_hh(b, c, d, a, k[10], 23, -1094730640); 47 a = MD5_hh(a, b, c, d, k[13], 4, 681279174); 48 d = MD5_hh(d, a, b, c, k[0], 11, -358537222); 49 c = MD5_hh(c, d, a, b, k[3], 16, -722521979); 50 b = MD5_hh(b, c, d, a, k[6], 23, 76029189); 51 a = MD5_hh(a, b, c, d, k[9], 4, -640364487); 52 d = MD5_hh(d, a, b, c, k[12], 11, -421815835); 53 c = MD5_hh(c, d, a, b, k[15], 16, 530742520); 54 b = MD5_hh(b, c, d, a, k[2], 23, -995338651); 55 56 a = MD5_ii(a, b, c, d, k[0], 6, -198630844); 57 d = MD5_ii(d, a, b, c, k[7], 10, 1126891415); 58 c = MD5_ii(c, d, a, b, k[14], 15, -1416354905); 59 b = MD5_ii(b, c, d, a, k[5], 21, -57434055); 60 a = MD5_ii(a, b, c, d, k[12], 6, 1700485571); 61 d = MD5_ii(d, a, b, c, k[3], 10, -1894986606); 62 c = MD5_ii(c, d, a, b, k[10], 15, -1051523); 63 b = MD5_ii(b, c, d, a, k[1], 21, -2054922799); 64 a = MD5_ii(a, b, c, d, k[8], 6, 1873313359); 65 d = MD5_ii(d, a, b, c, k[15], 10, -30611744); 66 c = MD5_ii(c, d, a, b, k[6], 15, -1560198380); 67 b = MD5_ii(b, c, d, a, k[13], 21, 1309151649); 68 a = MD5_ii(a, b, c, d, k[4], 6, -145523070); 69 d = MD5_ii(d, a, b, c, k[11], 10, -1120210379); 70 c = MD5_ii(c, d, a, b, k[2], 15, 718787259); 71 b = MD5_ii(b, c, d, a, k[9], 21, -343485551); 72 73 x[0] = MD5_add32(a, x[0]); 74 x[1] = MD5_add32(b, x[1]); 75 x[2] = MD5_add32(c, x[2]); 76 x[3] = MD5_add32(d, x[3]); 77 78} 79 80function MD5_cmn(q, a, b, x, s, t) { 81 a = MD5_add32(MD5_add32(a, q), MD5_add32(x, t)); 82 return MD5_add32((a << s) | (a >>> (32 - s)), b); 83} 84 85function MD5_ff(a, b, c, d, x, s, t) { 86 return MD5_cmn((b & c) | ((~b) & d), a, b, x, s, t); 87} 88 89function MD5_gg(a, b, c, d, x, s, t) { 90 return MD5_cmn((b & d) | (c & (~d)), a, b, x, s, t); 91} 92 93function MD5_hh(a, b, c, d, x, s, t) { 94 return MD5_cmn(b ^ c ^ d, a, b, x, s, t); 95} 96 97function MD5_ii(a, b, c, d, x, s, t) { 98 return MD5_cmn(c ^ (b | (~d)), a, b, x, s, t); 99} 100 101function MD5_md51(s) { 102 txt = ''; 103 var n = s.length, 104 state = [1732584193, -271733879, -1732584194, 271733878], i; 105 for (i = 64; i <= s.length; i += 64) { 106 MD5_md5cycle(state, MD5_md5blk(s.substring(i - 64, i))); 107 } 108 s = s.substring(i - 64); 109 var tail = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; 110 for (i = 0; i < s.length; i++) { 111 tail[i >>
111 2] |= s.charCodeAt(i) << ((i % 4) << 3); 112 } 113 tail[i >> 2] |= 0x80 << ((i % 4) << 3); 114 if (i > 55) { 115 MD5_md5cycle(state, tail); 116 for (i = 0; i < 16; i++) { 117 tail[i] = 0; 118 } 119 } 120 tail[14] = n * 8; 121 MD5_md5cycle(state, tail); 122 return state; 123} 124 125function MD5_md5blk(s) { 126 var md5blks = [], i; 127 for (i = 0; i < 64; i += 4) { 128 md5blks[i >> 2] = s.charCodeAt(i) 129 + (s.charCodeAt(i + 1) << 8) 130 + (s.charCodeAt(i + 2) << 16) 131 + (s.charCodeAt(i + 3) << 24); 132 } 133 return md5blks; 134} 135 136var MD5_hex_chr = '0123456789abcdef'.split(''); 137 138function MD5_rhex(n) { 139 var s = '', j = 0; 140 for (; j < 4; j++) { 141 s += MD5_hex_chr[(n >> (j * 8 + 4)) & 0x0F] + MD5_hex_chr[(n >> (j * 8)) & 0x0F]; 142 } 143 return s; 144} 145 146function MD5_hex(x) { 147 for (var i = 0; i < x.length; i++) { 148 x[i] = MD5_rhex(x[i]); 149 } 150 return x.join(''); 151} 152 153function MD5_add32(a, b) { 154 return (a + b) & 0xFFFFFFFF; 155} 156 157function md5(s) { 158 return MD5_hex(MD5_md51(s)); 159} 160 161// flowplay - used in game 162function fcanvas() { 163 var canvas = document.createElement('canvas'); 164 var ctx = canvas.getContext('2d'); 165 ctx.fillStyle = '#ff66bb'; 166 ctx.fillRect(10, 10, 60, 20); 167 ctx.fillStyle = '#0199dd'; 168 ctx.fillRect(20, 20, 80, 40); 169 return md5(canvas.toDataURL()); 170} 171 172// flowplay - used in game 173function fscreen() { 174 var widthAndHeight = screen.width + 'x' + screen.height; 175 if (screen.orientation && (Math.abs(screen.orientation.angle) === 90 || screen.orientation.angle === 270)) { 176 widthAndHeight = screen.height + 'x' + screen.width; 177 } 178 return md5(widthAndHeight + 'x' + window.devicePixelRatio + 'x' + screen.pixelDepth + 'x' + screen.colorDepth); 179}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.