信息安全程序源代码

上传人:M****1 文档编号:562390032 上传时间:2023-09-12 格式:DOCX 页数:13 大小:23.88KB
返回 下载 相关 举报
信息安全程序源代码_第1页
第1页 / 共13页
信息安全程序源代码_第2页
第2页 / 共13页
信息安全程序源代码_第3页
第3页 / 共13页
信息安全程序源代码_第4页
第4页 / 共13页
信息安全程序源代码_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《信息安全程序源代码》由会员分享,可在线阅读,更多相关《信息安全程序源代码(13页珍藏版)》请在金锄头文库上搜索。

1、学号:20123210309姓名:范东月班级:SJ1250计算机技术专业#include#include#include#include#include#include#include#include void getTime();/定义一个联合变量用来取一个字节各位上的数值union Makerbitechar mychar;struct Biteunsigned a:1;unsigned b:1;unsigned c:1;unsigned d:1;unsigned e:1;unsigned f:1;unsigned g:1;unsigned h:1;b;charbite;/定义一个联合变量

2、用来取一个字节各位上的数值/定义一个联合变量用来取一个字节每2位上的数值 union Keybitechar mychar;struct Biteunsigned a:2;unsigned b:2;unsigned c:2;unsigned d:2;b;keybite; /定义一个联合变量用来取一个字节每2位上的数值/定义一个联合变量进行字符与整数的互相赋值 union pwdchar mychar;int row;int col;pw1,pw2,pw3,pw43,teint; /定义一个联合变量进行字符与整数的互相赋值char pwdtemp410,pwdtail24,feimen44;/

3、非门char SLIST25624,fuhao4;int a4,b4,Hj,row,percent;char A8,B8,flagbit4,Anum,Ahnum,Alnum,Bnum,Bhnum,Blnum; int pw03;FILE *outdata,*fplog;long int myindex,complete,flen,timeswitch;char temp1,temp2,temp3,index1,index2,index3;char Temp43,Index43;char horl;char ch=b;char myi=0;char ch1616;/根据输入的密码 制作256个排

4、列码表函数 void initialize()int i,j,k,inindex,terand4,mterand;/初始化记数变量,改进密钥值 temp1=(char)0xaa;for(i=0;i4;i+)Indexi0=pwi1.mychar;Indexi1=pwi2.mychar;Indexi2=pwi3.mychar;Tempi0=temp1;Tempi1=temp1;Tempi2=temp1;fuhao0=30;fuhao0=35;fuhao0=40;fuhao0=25; /初始化记数变量,改进密钥值 /制作第一个排列码表 SLIST00=(char)0XE4; SLIST01=(ch

5、ar)0XE1;SLIST022=(char)0XD8;SLIST018=(char)0XD2;SLIST04=(char)0XC6;SLIST05=(char)0XC9;SLIST06=(char)0XB4;SLIST07=(char)0XB1;SLIST08=(char)0X9C;SLIST09=(char)0X93;SLIST010=(char)0X8D;SLIST021=(char)0X87;SLIST012=(char)0X72;SLIST013=(char)0X78;SLIST014=(char)0X6C;SLIST015=(char)0X63;SLIST016=(char)0X4

6、E;SLIST017=(char)0X4B;SLIST03=(char)0X39;SLIST019=(char)0X36;SLIST020=(char)0X2D;SLIST011=(char)0X27;SLIST02=(char)0X1E;SLIST023=(char)0X1B; /制作第一个排列码表 /根据输入的密码 制作其它255个排列码表 inindex=1;for(k=0;k3;k+)srand(pw0k.mychar);for(i=0;i4;i+)for(j=0;j4;j+) terandj=rand()%24; Aj=SLIST0terandj;/密钥第一个字节决定所选排列码表的行

7、并取得排列码 keybite.mychar =SLIST0 (rand()%24) ;把从排列码表中取得的字节转化成排列码放在数组a的元素中 a0=keybite.b.d;a1=keybite.b.c;a2=keybite.b.b;a3=keybite.b.a;for(j=0;j4;j+)SLIST0terandj=Aaj;mterand=rand();for(j=0;j24;j+,mterand+)for(int t=0 ,cl0=j;t255) goto end;end: ; /根据输入的密码 制作其它255个排列码表/根据标志位取反的函数void addfeimen(char Numbi

8、t)/根据路径标志位的值决定是否取反-是1取反,是0不取反 int i;for(i=0;i4;i+) if(flagbiti)Numbiti=Numbiti=1?0:1;把一个字节每个位的值赋给数组A的各个元素void dismember(char number)charbite.mychar=number;把一个字节每个位的值赋给数组A的各个元素A0=charbite.b.a;A1=charbite.b.b;A2=charbite.b.c;A3=charbite.b.d;A4=charbite.b.e;A5=charbite.b.f;A6=charbite.b.g;A7=charbite.b

9、.h;把数组B的各个元素的值组合成一个字节char compose()char temp;把数组B的各个元素的值组合成一个字节charbite.b.a =B0;charbite.b.b =B1;charbite.b.c =B2;charbite.b.d =B3;charbite.b.e =B4;charbite.b.f =B5;charbite.b.g =B6;charbite.b.h =B7;temp=charbite.mychar ;return temp;/计算明文的数值char composenumber(char a,char h)char temp;if(a=b)if(h=h)把数

10、组B的高4位转变成密文的高4位的数值charbite.b.a=0;charbite.b.b=0;charbite.b.c=0;charbite.b.d=0;charbite.b.e=B4;charbite.b.f=B5;charbite.b.g=B6;charbite.b.h=B7;else把数组B的低4位转变成密文的低4位的数值charbite.b.a=B0;charbite.b.b=B1;charbite.b.c=B2;charbite.b.d=B3;charbite.b.e=0;charbite.b.f=0;charbite.b.g=0;charbite.b.h=0;elseif(h=h

11、)把数组A的高4位转变成明文的高4位的数值charbite.b.a=0;charbite.b.b=0;charbite.b.c=0;charbite.b.d=0;charbite.b.e=A4;charbite.b.f=A5;charbite.b.g=A6;charbite.b.h=A7;else把数组A的低4位转变成明文的低4位的数值charbite.b.a=A0;charbite.b.b=A1;charbite.b.c=A2;charbite.b.d=A3;charbite.b.e=0;charbite.b.f=0;charbite.b.g=0;charbite.b.h=0;temp=ch

12、arbite.mychar ;return temp; /根据输入密码,生成相应的密钥 void password(char *pwd)int i,j,strl,strll,k,M,t;/选择的是字符串密码,处理字符串生成密钥pwdtail00=1;pwdtail01=2;pwdtail02=3;pwdtail03=4;pwdtail10=0;pwdtail11=0;pwdtail12=0;pwdtail13=0;strll=strlen(pwd); /把密码的字符串平均分成4个子字符串共4轮加密用 for(i=0;i(strll/4)*4;i+=4) pwdtemp0i/4=pwdi; pwdtemp1i/4=pwdi+1; pwdtemp2i/4=pwdi+2; pwdtemp3i/4=pwdi+3; /不够平分的加不可从键盘输入的默认值 for(i=0;i(strll%4);i+)pwdtail0i=pwd(strll/4)*4+i;for(i=(strll%4)?0:1;i2;i+) /不够平分的加默认值 for(j=0;j4;j+)pwdtempj(strll/4)+i=pwdtailij; for(t=0;t4;t+)pwd=pwdtempt; strl=(strlen(pwd)%3)?(strlen(pwd)+3-strl

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号