资源简介
用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
相关资源
- 分治策略算法设计寻找最邻近点对c
- C语言实现拉格朗日插值
- C语言 斗地主 游戏
-
利用ja
vasc ript在网页实现八数码启 - C++实现回归算法(逻辑回归 线性回归
- Linux下C语言实现的FTP系统
- C语言连接Access数据库
- 常用加密算法AES、RSA、DES、MD5、TEA、
- 迷宫求解问题算法
- DES算法加解密实现 C语言
- linux下FTP服务器与客户端的C语言实现
- c语言程序设计案例教程 廖湖声 第二
- 用C语言实现八数码问题的宽度优先搜
- 数据结构表达式求值,c语言版,能计
- c语言井字棋源码
- C语言课程设计_学生选修课系统
- C语言版的职工管理系统课设
- Linux操作系统C语言编程入门pd
- c语言银行管理系统
- c语言实现的对任意长度的字符串加解
- RIP协议路由表调整算法的实现__c++编写
- 《C语言程序设计实验指导》颜晖,张
- c语言拓扑排序算法
- 人机对战智能五子棋 C语言版
- 严蔚敏.吴伟民等《数据结构(c语言版
- c语言 bmp图片显示
- 几种控制方法的C语言编程.
- FFT的C语言实现代码
- 常用的100个经典C语言程序
- C++数据结构与算法(第4版) 完整版
评论
共有 条评论