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; } returnArray(a,b,c,d); } functionmd5_cmn(q,a,b,x,s,t){ returnsafe_add(bit_rol(safe_add(safe_add(a,q),safe_add(x,t)),s),b); } functionmd5_ff(a,b,c,d,x,s,t){ returnmd5_cmn((b&c)|((~b)&d),a,b,x,s,t); } functionmd5_gg(a,b,c,d,x,s,t){ returnmd5_cmn((b&d)|(c&(~d)),a,b,x,s,t); } functionmd5_hh(a,b,c,d,x,s,t){ returnmd5_cmn((b^c)^d,a,b,x,s,t); } functionmd5_ii(a,b,c,d,x,s,t){ returnmd5_cmn(c^(b|(~d)),a,b,x,s,t); } functionsafe_add(x,y){ varlsw=(x&65535)+(y&65535); varmsw=((x>>16)+(y>>16))+(lsw>>16); return(msw<<16)|(lsw&65535); } functionbit_rol(num,cnt){ return(num<<cnt)|(num>>>(32-cnt)); } functionstr2binl(str){ varbin=Array(); varmask=(1<<strsize)-1; |