资源简介

用C语言实现SHA-1算法 用C语言实现SHA-1算法 用C语言实现SHA-1算法用C语言实现SHA-1算法 用C语言实现SHA-1算法

资源截图

代码片段和文件信息

//编程实现RSA_1
#include
#include 
void show(int r[])          //将二进制转化为十六进制并输出
{
int i;
int a[40];
for(i=0;i<40;i++)
{
a[i]=r[i*4+0]*8+r[i*4+1]*4+r[i*4+2]*2+r[i*4+3]*1;
    switch(a[i])
{
case 0 :
printf(“0“);break;
case 1 : 
printf(“1“);break;
case 2 :
printf(“2“);break;
case 3 : 
printf(“3“);break;
case 4 : 
printf(“4“);break;
case 5 : 
printf(“5“);break;
case 6 : 
        printf(“6“);break;
case 7 :
printf(“7“);break;
case 8 : 
printf(“8“);break;
case 9 : 
printf(“9“);break;
case 10 :
printf(“a“);break;
case 11 : 
printf(“b“);break;
case 12 : 
printf(“c“);break;
case 13 : 
printf(“d“);break;
case 14 :
printf(“e“);break;
case 15 : 
printf(“f“);break;
default: break;
}
if(i%8==7)
printf(“\n“);
}

}
void rotl(int a[]int n)   //实现二进制a循环左移n位
{
int i;
int b[32];
    for(i=0;i        b[i]=a[i];
    for(i=0;i<32-n;i++)
        a[i]=a[i+n];
    for(i=32-n;i<32;i++)
     a[i]=b[i-32+n];
}

int turn(int nint a[]int b) //将十进制转化为其它数制
{
    int i=0temp;
    do{
        temp=n%b;
        a[i++]=temp;
    }while(n=n/b);
return i;
}  

void trans(char a[]int c[])    //实现十六进制转化为二进制
{
int ijflag;
int b[16][4]={{0000}{0001}{0010}{0011}{0100}{0101}
{0110}{0111}{1000}{1001}{1010}{1011}{1100}
{1101}{1110}{1111}};
for(i=0;i<8;i++)
{
switch(a[i])
{
case ‘0‘:
flag=0;break;
case ‘1‘ : 
flag=1;break;
case ‘2‘ :
flag=2;break;
case ‘3‘ : 
flag=3;break;
case ‘4‘ : 
flag=4;break;
case ‘5‘ : 
flag=5;break;
case ‘6‘ : 
flag=6;break;
case ‘7‘ :
flag=7;break;
case ‘8‘ : 
flag=8;break;
case ‘9‘ : 
flag=9;break;
case ‘a‘ :
flag=10;break;
case ‘b‘ : 
flag=11;break;
case ‘c‘ : 
flag=12;break;
case ‘d‘ : 
flag=13;break;
case ‘e‘ :
flag=14;break;
case ‘f‘ : 
flag=15;break;
default: break;
}
for(j=0;j<4;j++)
c[4*i+j]=b[flag][j];
}
}
void w(char p[]int w[][32])     //将输入的字符串化为二进制并分组
{
int ijflagnle=0k=0;
int b[512]s[64];
    for(i=0;p[i];i++)    //将字符串化为二进制
{   
       unsigned  int j=0x80tmp=*(p+i);   
       for(;j;j>>=1)
   if(j&tmp) b[k++]=1;   
           else   b[k++]=0;   
}  
flag=k;          //flag为输入字符串的位数
        b[k++]=1;        //填充一个1其余位补0
for(;k<512;k++) b[k]=0;
        n=turn(flags2);
        for(l=511;l>511-n;l--)  //将长度添加到数据块
            b[l]=s[e++];  
l=0;
    for(i=0;i<16;i++)      //将512个字分为16(*32)组
for(j=0;j<32;j++)
{
            w[i][j]=b[l++];
}
    for(;i<80;i++)
    { 
for(j=0;j<32;j++)
w[i][j]=w[i-3][j]^w[i-8][j]^w[i-14][j]^w[i-16][j];
        rotl(w[i]1);
    }
}
void f1(int tint B[]int C[]int D[]int f[]) //实现四个函数
{
int i;
for(i=0;i<32;i++)
{
if(t>=0&&t<=19) 
   f[i]=(B[i

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        467  2009-12-21 18:12  sha\200702054029谭金林\说明.txt

     文件     163905  2009-11-22 23:37  sha\200702054029谭金林\fSHA_1.exe

     文件     172098  2009-11-29 20:24  sha\200702054029谭金林\SHA_1.exe

     文件       6261  2009-11-29 20:24  sha\200702054029谭金林\SHA_1.cpp

     文件     238592  2009-12-21 19:07  sha\200702054029谭金林\sha_1.doc

     文件     288768  2009-12-22 20:45  sha\200702054029谭金林\sha-1.doc

     文件        467  2009-12-03 11:02  sha\SHA_1算法\说明.txt

     文件     163905  2009-11-22 23:37  sha\SHA_1算法\fSHA_1.exe

     文件     172098  2009-11-29 20:24  sha\SHA_1算法\SHA_1.exe

     文件     236032  2009-12-21 17:34  sha\SHA_1算法\sha_1.doc

     目录          0  2009-11-29 20:09  sha\200702054029谭金林

     目录          0  2009-12-21 17:35  sha\SHA_1算法

     目录          0  2009-11-22 12:38  sha

----------- ---------  ---------- -----  ----

              1442593                    13


评论

共有 条评论