-
大小: 2KB文件類(lèi)型: .c金幣: 1下載: 0 次發(fā)布日期: 2021-05-09
- 語(yǔ)言: C/C++
- 標(biāo)簽:
資源簡(jiǎn)介
sha1哈希函數(shù),c語(yǔ)言實(shí)現(xiàn)
代碼片段和文件信息
#define???F1(xyz)??((x&y)|((~x)&z))
#define???F2(xyz)??(x^y^z)
#define???F3(xyz)??((x&y)|(x&z)|(y&z))
int??SHA1(unsigned?char??*ldatint?ldatlenunsigned?char??*lout)
{
int?ijkt1t2;
int?L;??unsigned?int?*data;
unsigned?int?*temptemp1;
unsigned?int??W[80]K;
unsigned?int??ABCDE;
unsigned?int??abcde;
unsigned?char?ltmp[128];
L=((ldatlen>>6)+1)<<6;
if((ldatlen&0x3f)>=56)?L+=64;
data=(unsigned?int?*)malloc((L>>2)*sizeof(int));
if(data==NULL)
{
for(i=0;i<20;i++)?lout[i]=0;
return?0;
}
ltmp[0]=0x80;
j=L-8-ldatlen;
for(i=1;i K=ldatlen<<3;
t1=L-ldatlen;
for(i=t1-1;i>=j;i--)?{ ltmp[i]=K&0xff;?K>>=8;?}
t2=(ldatlen>>2)<<2;
for(k=0i=0;i {
for(K=0j=0;j<4;j++)?K=(K<<8)^ldat[i+j];
data[k]=K;
}
for(K=0;i
t2=ldatlen&0x3;
for(i=t2;i<4;i++)?K=(K<<8)^ltmp[i-t2];
data[k]=K;?k++;
for(i=4-t2;i {
for(K=0j=0;j<4;j++)?K=(K<<8)^ltmp[i+j];
data[k]=K;
}
L>>=6;
A=0x67452301;??B=0xefcdab89;
C=0x98badcfe;??D=0x10325476;??E=0xc3d2e1f0;
for(temp=datai=0;i
評(píng)論
共有 條評(píng)論