MD5 by da0

#define R(e) ((e)<<s|(e)>>32-s)\x0d
#define S(e) return p+R(o+(e)+x[k&15]+(unsigned)(fabs(sin(i))*pow(2,32)));\x0d
char z[99];x[99],i,k;F(o,p,q,r,s){S(p&q|~p&r)}G(o,p,q,r,s){S(p&r|q&~r)}H(o,p,q,r,s){S(p^q^r)}I(o,p,q,r,s){S(q^(p|~r))}main(a,b,c,d,A,B,C,D){for(;gets(z);puts("")){for(memset(x,i=0,99);z[i];)x[i/4]+=z[i]<<i++%4*8;x[i/4]+=128<<i%4*8;x[14]+=i*8;A=a=0x67452301;B=b=0xefcdab89;C=c=0x98badcfe;D=d=0x10325476;for(i=k=0;i++<16;){a=F(a,b,c,d,7);++k;++i;d=F(d,a,b,c,12);++k;++i;c=F(c,d,a,b,17);++k;++i;b=F(b,c,d,a,22);++k;}for(k=1;i<33;){a=G(a,b,c,d,5);k+=5;++i;d=G(d,a,b,c,9);k+=5;++i;c=G(c,d,a,b,14);k+=5;++i;b=G(b,c,d,a,20);k+=5;++i;}for(k=5;i<49;){a=H(a,b,c,d,4);k+=3;++i;d=H(d,a,b,c,11);k+=3;++i;c=H(c,d,a,b,16);k+=3;++i;b=H(b,c,d,a,23);k+=3;++i;}for(k=0;i<65;){a=I(a,b,c,d,6);k+=7;++i;d=I(d,a,b,c,10);k+=7;++i;c=I(c,d,a,b,15);k+=7;++i;b=I(b,c,d,a,21);k+=7;++i;}for(i=0;i<4;)printf("%02x",(A+a>>i++%4*8)&255);for(;i<8;)printf("%02x",(B+b>>i++%4*8)&255);for(;i<12;)printf("%02x",(C+c>>i++%4*8)&255);for(;i<16;)printf("%02x",(D+d>>i++%4*8)&255);}}

Note that non-ascii characters in the above source code will be escaped (such as \x9f).

download

return to the top page