資源簡介
sha1哈希函數,c語言實現
代碼片段和文件信息
#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
- 上一篇:集裝箱的裝箱問題c語言算法
- 下一篇:類似QQ登陸界面c++builder
評論
共有 條評論