- 724 名前:665 mailto:sage [02/09/02 22:22]
- 久々にSHA1を見直したらまだ削れる事に気付いた
これで>665のlittle endian用もinclude以外が7行、と #つー訳で>668氏の7行標準入力版も更に短縮可能 #include <stdio.h> size_t*p,*q,H[186]={0x67452301,0xefcdab89,0,271733878,0xc3d2e1f0},n,d,z,l,h;L(c ){((char*)q=H+90)[3^n++]=c;if(n>63){for(n=80,p=memcpy(q-5,H,20);n;1[p--]=d<<30| d/4)d=q[13]^q[8]^q[2]^*q,q[16]=d+d|d>>31,d=p[1],z=p[2],c=p[3],p[-1]=(*p<<5|*p>> 27)+p[4]+0x5a827999+*q+++(--n/5&4?n>39?c^d&(z^c):882459459+(d&(z|c)|z&c):(n>39? 341275144:0x6fe0483d)+(d^z^c));for(;H-p--;)*p+=p[5];}}S(a){for(h=4;h--;)L(a>>h* 8);}main(a,v)char**v;{FILE*f=fopen(v[1],"rb");for(H[2]=~*H;~(a=getc(f));h+=!(l +=8))L(a);for(L(128);n-56;)L(0);for(S(h),S(l);n<5;)printf("%08x",H[n++]);}
|

|