//----------- function MD5 (s) { Return Binl2hex (CORE_MD5 (Str2binl (s), s.length*strsize)); } function Core_md5 (x, Len) { X[len >> 5] = (X[len >> 5]) | (128 << len%32); X[(((len+64) >>> 9) << 4) +14] = len; var a = 1732584193; var b =-271733879; var c =-1732584194; var d = 271733878; var i = 0; while (I<x.length) { var Olda = A; var oldb = b; var oldc = c; var oldd = D; A = Md5_ff (A, B, C, D, X[i+0], 7,-680876936); D = md5_ff (d, a, B, C, x[i+1], 12,-389564586); c = md5_ff (c, D, a, B, x[i+2], 17, 606105819); b = md5_ff (b, C, D, A, x[i+3], 22,-1044525330); A = Md5_ff (A, B, C, D, X[i+4], 7,-176418897); D = md5_ff (d, a, B, C, x[i+5], 12, 1200080426); c = md5_ff (c, D, a, B, x[i+6], 17,-1473231341); b = md5_ff (b, C, D, A, x[i+7], 22,-45705983); A = Md5_ff (A, B, C, D, X[i+8], 7, 1770035416); D = md5_ff (d, a, B, C, x[i+9], 12,-1958414417); c = md5_ff (c, D, a, B, x[i+10], 17,-42063); b = md5_ff (b, C, D, A, x[i+11], 22,-1990404162); A = Md5_ff (A, B, C, D, X[i+12], 7, 1804603682); D = md5_ff (d, a, B, C, x[i+13], 12,-40341101); c = md5_ff (c, D, a, B, x[i+14], 17,-1502002290); b = md5_ff (b, C, D, A, x[i+15], 22, 1236535329); A = Md5_gg (A, B, C, D, X[i+1], 5,-165796510); D = Md5_gg (d, a, B, C, x[i+6], 9,-1069501632); c = Md5_gg (c, D, a, B, x[i+11], 14, 643717713); b = Md5_gg (b, C, D, A, x[i+0], 20,-373897302); A = Md5_gg (A, B, C, D, X[i+5], 5,-701558691); D = Md5_gg (d, a, B, C, x[i+10], 9, 38016083); c = Md5_gg (c, D, a, B, x[i+15], 14,-660478335); b = Md5_gg (b, C, D, A, x[i+4], 20,-405537848); A = Md5_gg (A, B, C, D, X[i+9], 5, 568446438); D = Md5_gg (d, a, B, C, x[i+14], 9,-1019803690); c = Md5_gg (c, D, a, B, x[i+3], 14,-187363961); b = Md5_gg (b, C, D, A, x[i+8], 20, 1163531501); A = Md5_gg (A, B, C, D, X[i+13], 5,-1444681467); D = Md5_gg (d, a, B, C, x[i+2], 9,-51403784); c = Md5_gg (c, D, a, B, x[i+7], 14, 1735328473); b = Md5_gg (b, C, D, A, x[i+12], 20,-1926607734); A = Md5_hh (A, B, C, D, X[i+5], 4,-378558); D = md5_hh (d, a, B, C, x[i+8], 11,-2022574463); c = md5_hh (c, D, a, B, x[i+11], 16, 1839030562); b = md5_hh (b, C, D, A, x[i+14], 23,-35309556); A = Md5_hh (A, B, C, D, X[i+1], 4,-1530992060); D = md5_hh (d, a, B, C, x[i+4], 11, 1272893353); c = md5_hh (c, D, a, B, x[i+7], 16,-155497632); b = md5_hh (b, C, D, A, x[i+10], 23,-1094730640); A = Md5_hh (A, B, C, D, X[i+13], 4, 681279174); D = md5_hh (d, a, B, C, x[i+0], 11,-358537222); c = md5_hh (c, D, a, B, x[i+3], 16,-722521979); b = md5_hh (b, C, D, A, x[i+6], 23, 76029189); A = Md5_hh (A, B, C, D, X[i+9], 4,-640364487); D = md5_hh (d, a, B, C, x[i+12], 11,-421815835); c = md5_hh (c, D, a, B, x[i+15], 16, 530742520); b = md5_hh (b, C, D, A, x[i+2], 23,-995338651); A = Md5_ii (A, B, C, D, X[i+0], 6,-198630844); D = Md5_ii (d, a, B, C, x[i+7], 10, 1126891415); c = Md5_ii (c, D, a, B, x[i+14], 15,-1416354905); b = Md5_ii (b, C, D, A, x[i+5], 21,-57434055); A = Md5_ii (A, B, C, D, X[i+12], 6, 1700485571); D = Md5_ii (d, a, B, C, x[i+3], 10,-1894986606); c = Md5_ii (c, D, a, B, x[i+10], 15,-1051523); b = Md5_ii (b, C, D, A, x[i+1], 21,-2054922799); A = Md5_ii (A, B, C, D, X[i+8], 6, 1873313359); D = Md5_ii (d, a, B, C, x[i+15], 10,-30611744); c = Md5_ii (c, D, a, B, x[i+6], 15,-1560198380); b = Md5_ii (b, C, D, A, x[i+13], 21, 1309151649); A = Md5_ii (A, B, C, D, X[i+4], 6,-145523070); D = Md5_ii (d, a, B, C, x[i+11], 10,-1120210379); c = Md5_ii (c, D, a, B, x[i+2], 15, 718787259); b = Md5_ii (b, C, D, A, x[i+9], 21,-343485551); A = Safe_add (A, Olda); b = Safe_add (b, oldb); c = Safe_add (c, OLDC); D = Safe_add (d, OLDD); i = i+16; } Return Array (A, B, C, D); } function Md5_cmn (q, A, B, X, S, t) { Return Safe_add (Bit_rol (Safe_add (Safe_add (A, Q), Safe_add (x, T)), s), b); } function Md5_ff (A, B, C, D, X, S, t) { Return Md5_cmn (b & c) | ((~b) & D), A, B, X, S, T); } function Md5_gg (A, B, C, D, X, S, t) { Return Md5_cmn (b & D) | (C & (~d)), A, B, X, S, T); } function Md5_hh (A, B, C, D, X, S, t) { Return Md5_cmn ((b ^ c) ^ D, a, B, X, S, T); } function Md5_ii (A, B, C, D, X, S, t) { return Md5_cmn (c ^ (b) | (~d)), A, B, X, S, T); } function Safe_add (x, y) { var LSW = (x & 65535) + (Y & 65535); var MSW = ((x >>) + (y >>)) + (LSW >> 16); Return (MSW << 16) | (LSW & 65535); } function Bit_rol (num, cnt) { return (num << cnt) | (Num >>> (32-cnt)); } function Str2binl (str) { var bin = Array (); var mask = (1 << strsize)-1; var i = 0; while (i< (str.length*strsize)) { Bin[i >> 5] = (bin[i >> 5]) | ((Str.charcodeat (i/strsize) & mask) << i%32); i = i+strsize; } return bin; } function Binl2hex (BinArray) { if (hexcase) { } else { } var hex_tab = "0123456789abcdef"; var str = ""; var i = 0; while (i< (binarray.length*4)) { str = str+ (Hex_tab.charat (binarray[i >> 2]) >> ((i%4*8) +4) &) +hex_tab.charat ((Binarray[i > > 2]) >> (i%4*8)) & 15); i++; } return str; } var hexcase = 0; var strsize = 8; --------above without modification, b = MD5 ("xx"); XX can be set to any character s = b.touppercase (); Convert to uppercase Trace (b); Trace (s); |