資源簡介
用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
評論
共有 條評論