|
local md5=function(E) local z,A,B,C,D,p=0xffffffff,0x67452301,0xefcdab89,0x98badcfe,0x10325476,string local uk,R,Q,q,v,P=p.unpack,function(a,b,c,d,x,s,ac) a=a+((b&c)|((~b)&d))+x+ac a=(((a&z)<<s)|((a&z)>>32-s))+b return a&z end,function(a,b,c,d,x,s,ac) a=a+((b&d)|(c&(~d)))+x+ac a=(((a&z)<<s)|((a&z)>>32-s))+b return a&z end,function(a,b,c,d,x,s,ac) a=a+(b~c~d)+x+ac a=(((a&z)<<s)|((a&z)>>32-s))+b return a&z end,function(a,b,c,d,x,s,ac) a=a+(c~(b|(~d)))+x+ac a=(((a&z)<<s)|((a&z)>>32-s))+b return a&z end,function(s) local N=s:len() local Z=N*8 % 512 local fS=(448-Z)//8 if Z>448 then fS=(960-Z)//8 end local K={} local bI=1 for i=1,N do local X=(i-1)//4+1 K[X]=K[X] or 0 K[X]=K[X]|(s:byte(i)<<(bI-1)*8) bI=bI+1 if bI==5 then bI=1 end end local Y=false local U=#K if bI~=1 then K[U]=K[U]|0x80<<(bI-1)*8 Y=true end for i=1,fS//4 do if not Y and i==1 then K[U+i]=0x80 else K[U+i]=0x0 end end local O=N*8 U=#K K[U+1]=O&z K[U+2]=O>>32 return K end return(function(s) local w=P(s) local V={A,B,C,D} local x=function(f,g) return t |