#define\ P /**/typedef /**/P unsigned int D ;D i, j , r[5] ; # /* (:*/ include<stdio.h> ; P unsigned char B;B f[8 ]; ; # /* ,*/define A D *v,D*w,D*x,D*y, D* z # define F( i)(o->l[ i&15 ]=L(o->l[(i+13)&15]^o-> \ l[( i+ 8)&15]^o->l[(i+2)& 15]^o->l[i&15],1))+E/**/void #/* ! */ define/**/E/**/ L(*v,5);*w=L( *w,30);} ;D L( D u ,D v){return(((u)<<v)|((u)>>(32-v)));}D k,s[5],d[2]; /* @/ # % ,}*/ #define G(i) (o->l[i]=(0xff00ff00 &L(o->l\ [i ] , 24)) |(L(o->l [i],8)&0x00ff00ff))+0x5a827999+E /**/void ;B a[ + 1 <<15 ],b[64];P union{B c[64 ];D l[16]; }C;C*o /* */ ;; P void Q;Q V(A ){*z+=(((*w)&((*x)^(*y )))^(*y))+ G(k)W (A ) {*z+=(((* w)& ((* x)^(*y)))^(*y))+0x5a827999+F( k)X (A){ *z+=((* w)^( *x) ^(*y))+/*^x*/ 0x6ed9eba1 +F (k)Y (A){* z+=( ((( * w)|(*x))&(*y))| (* w& *x )) + 0x8f1bbcdc +F( k) Z(A){* z+=0xca62c1d6+( *w ^* x^* y)+F(k) (*R )( A); Q T (B e[64 ]){ o= (C *)e ;for( k=0 ;k< 5;k ++) r[k]=s [k] ;; for (k= 0;k<+ 80;k++ ){R =k <40 ?k<20? k<16 ?V : W:X :k <60?Y: Z;R( &r[ (( 80- k))%5 ],&r [(( 81 -k) ) %5],& r [ (( 82- k))% 5],& r[( 83 -k) %5 ],&r[( (84-k )) %5] );} for (k=0; k <5; k ++)s[k] +=r [k];}Q U( B*e ,D u ){j =((d[0 ] )>> 3 )&63;if( (d[0] +=u<< 3) <( u<< 3) )d[1]++ ;d [1 ] +=(u>>29) ;if( (j +u)> + 63 ){; memmove(&b[ j] ,e, i =64- j);for (T( b); 63+ i< u ;i+=+ 64)T((B*)&e [i ]) ;j = 0;} else {i=00 ;} memmove(&b[j],& e [i ] ,u -i );;}Q main(int uu, char**v){FILE* e; if (+ 1<uu&&(e= fopen( v[1 ],"rb"))){s[d [0 ] = d[1]=0]/* amg #!*/= 0x67452301; s[ 1] =( 137 )|(/* SHA1*/ 0xefcdab<< 8) ; s[ 2] = 00+ 0x98badcfe ;s[3] =0 |( 21622 ) |( 4146 <<16 );for (s[ 4] =0| 57840 |( + 50130 <<16 );! feof(e ); U(a,k) ){k= 1 << 14 ;{ ;}k= fread( a,1,k,e); }for (k =0 ;k <8 ;k++ )f [k ]=(B )((d [ (k >= 4? 0: 1) ]>> (( 3- (k& 3 )) *8 ))&( 255) ); for (U (( /*| # */ B *)"\x80",1);( d[ 0]& (8 * 63) ) != 0 +( 448 );U (( B * /* */ ) "\0 ",1 ));U (f ,8 ) ; {; } for (k= 0;k< 20 ; k ++ ) a[k ]=(B )((s [k>> + 2 ] >>(( 3-(k &3))* 8))& ( /* */ 255 ));; for( i=0; i < + 20; i+=4 )/*$% |*/ /* AP ! 03/ 18/01 2001! ^^;; bell. c // +IK! v^_^v SY! dandy C TW! LL!= %02x" **E! "%02x !*/ printf(/**/ "%" "02x%" "02x%" "02x%02x" "\40",a [i],a[i+1],a[ i+2],a[i+3] ); ;putchar /* @fips 180*/(10);fclose /* sha1 ~\=/' >>md5 ,:?/ ,*/ (e) ;} } |