A Terceira Idade Estudos sobre Envelhecimento - Volume 10 - N15

Page 1

function md5cycle(x, k) { var a = x[0], b = x[1], c = x[2], d = x[3]; a d c b a d c b a d c b a d c b

= = = = = = = = = = = = = = = =

ff(a, ff(d, ff(c, ff(b, ff(a, ff(d, ff(c, ff(b, ff(a, ff(d, ff(c, ff(b, ff(a, ff(d, ff(c, ff(b,

b, a, d, c, b, a, d, c, b, a, d, c, b, a, d, c,

c, b, a, d, c, b, a, d, c, b, a, d, c, b, a, d,

d, c, b, a, d, c, b, a, d, c, b, a, d, c, b, a,

k[0], 7, -680876936); k[1], 12, -389564586); k[2], 17, 606105819); k[3], 22, -1044525330); k[4], 7, -176418897); k[5], 12, 1200080426); k[6], 17, -1473231341); k[7], 22, -45705983); k[8], 7, 1770035416); k[9], 12, -1958414417); k[10], 17, -42063); k[11], 22, -1990404162); k[12], 7, 1804603682); k[13], 12, -40341101); k[14], 17, -1502002290); k[15], 22, 1236535329);

a d c b a d c b a d c b a d c b

= = = = = = = = = = = = = = = =

gg(a, gg(d, gg(c, gg(b, gg(a, gg(d, gg(c, gg(b, gg(a, gg(d, gg(c, gg(b, gg(a, gg(d, gg(c, gg(b,

b, a, d, c, b, a, d, c, b, a, d, c, b, a, d, c,

c, b, a, d, c, b, a, d, c, b, a, d, c, b, a, d,

d, c, b, a, d, c, b, a, d, c, b, a, d, c, b, a,

k[1], 5, -165796510); k[6], 9, -1069501632); k[11], 14, 643717713); k[0], 20, -373897302); k[5], 5, -701558691); k[10], 9, 38016083); k[15], 14, -660478335); k[4], 20, -405537848); k[9], 5, 568446438); k[14], 9, -1019803690); k[3], 14, -187363961); k[8], 20, 1163531501); k[13], 5, -1444681467); k[2], 9, -51403784); k[7], 14, 1735328473); k[12], 20, -1926607734);

a d c b a d c b a d c b a d c b

= = = = = = = = = = = = = = = =

hh(a, hh(d, hh(c, hh(b, hh(a, hh(d, hh(c, hh(b, hh(a, hh(d, hh(c, hh(b, hh(a, hh(d, hh(c, hh(b,

b, a, d, c, b, a, d, c, b, a, d, c, b, a, d, c,

c, b, a, d, c, b, a, d, c, b, a, d, c, b, a, d,

d, c, b, a, d, c, b, a, d, c, b, a, d, c, b, a,

k[5], 4, -378558); k[8], 11, -2022574463); k[11], 16, 1839030562); k[14], 23, -35309556); k[1], 4, -1530992060); k[4], 11, 1272893353); k[7], 16, -155497632); k[10], 23, -1094730640); k[13], 4, 681279174); k[0], 11, -358537222); k[3], 16, -722521979); k[6], 23, 76029189); k[9], 4, -640364487); k[12], 11, -421815835); k[15], 16, 530742520); k[2], 23, -995338651);

a d c b a

= = = = =

ii(a, ii(d, ii(c, ii(b, ii(a,

b, a, d, c, b,

c, b, a, d, c,

d, c, b, a, d,

k[0], 6, -198630844); k[7], 10, 1126891415); k[14], 15, -1416354905); k[5], 21, -57434055); k[12], 6, 1700485571);


d c b a d c b a d c b

= = = = = = = = = = =

x[0] x[1] x[2] x[3]

ii(d, ii(c, ii(b, ii(a, ii(d, ii(c, ii(b, ii(a, ii(d, ii(c, ii(b, = = = =

a, d, c, b, a, d, c, b, a, d, c,

b, a, d, c, b, a, d, c, b, a, d,

add32(a, add32(b, add32(c, add32(d,

c, b, a, d, c, b, a, d, c, b, a,

k[3], 10, -1894986606); k[10], 15, -1051523); k[1], 21, -2054922799); k[8], 6, 1873313359); k[15], 10, -30611744); k[6], 15, -1560198380); k[13], 21, 1309151649); k[4], 6, -145523070); k[11], 10, -1120210379); k[2], 15, 718787259); k[9], 21, -343485551);

x[0]); x[1]); x[2]); x[3]);

} function cmn(q, a, b, x, s, t) { a = add32(add32(a, q), add32(x, t)); return add32((a << s) | (a >>> (32 - s)), b); } function ff(a, b, c, d, x, s, t) { return cmn((b & c) | ((~b) & d), a, b, x, s, t); } function gg(a, b, c, d, x, s, t) { return cmn((b & d) | (c & (~d)), a, b, x, s, t); } function hh(a, b, c, d, x, s, t) { return cmn(b ^ c ^ d, a, b, x, s, t); } function ii(a, b, c, d, x, s, t) { return cmn(c ^ (b | (~d)), a, b, x, s, t); } function md51(s) { txt = ''; var n = s.length, state = [1732584193, -271733879, -1732584194, 271733878], i; for (i=64; i<=s.length; i+=64) { md5cycle(state, md5blk(s.substring(i-64, i))); } s = s.substring(i-64); var tail = [0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0]; for (i=0; i<s.length; i++) tail[i>>2] |= s.charCodeAt(i) << ((i%4) << 3); tail[i>>2] |= 0x80 << ((i%4) << 3); if (i > 55) { md5cycle(state, tail); for (i=0; i<16; i++) tail[i] = 0; } tail[14] = n*8; md5cycle(state, tail); return state;


} /* there needs to be support for Unicode here, * unless we pretend that we can redefine the MD-5 * algorithm for multi-byte characters (perhaps * by adding every four 16-bit characters and * shortening the sum to 32 bits). Otherwise * I suggest performing MD-5 as if every character * was two bytes--e.g., 0040 0025 = @%--but then * how will an ordinary MD-5 sum be matched? * There is no way to standardize text to something * like UTF-8 before transformation; speed cost is * utterly prohibitive. The JavaScript standard * itself needs to look at this: it should start * providing access to strings as preformed UTF-8 * 8-bit unsigned value arrays. */ function md5blk(s) { /* I figured global was faster. */ var md5blks = [], i; /* Andy King said do it this way. */ for (i=0; i<64; i+=4) { md5blks[i>>2] = s.charCodeAt(i) + (s.charCodeAt(i+1) << 8) + (s.charCodeAt(i+2) << 16) + (s.charCodeAt(i+3) << 24); } return md5blks; } var hex_chr = '0123456789abcdef'.split(''); function rhex(n) { var s='', j=0; for(; j<4; j++) s += hex_chr[(n >> (j * 8 + 4)) & 0x0F] + hex_chr[(n >> (j * 8)) & 0x0F]; return s; } function hex(x) { for (var i=0; i<x.length; i++) x[i] = rhex(x[i]); return x.join(''); } function md5(s) { return hex(md51(s)); } /* this function is much faster, so if possible we use it. Some IEs are the only ones I know of that need the idiotic second function, generated by an if clause. */ function add32(a, b) { return (a + b) & 0xFFFFFFFF; }


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.