还剩16页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
实验算法报告DES摘要:、、的简介1DES密码实际上是密码的进一步发展它是一种采用传统加密方法的区组密码它DES Lucifer的算法是对称的,既可用于加密又可用于解密美国国家标准局年开始研究除国防部外的1973其它部门的计算机系统的数据加密标准,于年月日和年月日先后两次向公19735151974827众发出了征求加密算法的公告加密算法要达到的目的通常称为密码算法要求主要为以下DES四点提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握密码体制的安全性应DES该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础实现经济,运行有效,并且适用于多种完全不同的应用目前在这里,随着三金工程尤其是金卡工程的启动,算法在、、磁卡及智能DES POSATM卡卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用(IC卡持卡人的的加密传输,卡与间的双向认证、金融交易数据包的校验等,均用PIN ICPOS MAC到算法DES算法的入口参数有三个、、其中为个字节共位,是算法DES Key Data ModeKey864DES的工作密钥;也为个字节位,是要被加密或被解密的数据;为的工作方式,Data864Mode DES有两种加密或解密算法是这样工作的如为加密,则用去把数据进行加密,生成的DES ModeKey DataData密码形式位)作为的输出结果;如为解密,则用去把密码形式的数据(64DES ModeKeyData解密,还原为的明码形式位)作为的输出结果在通信网络的两端,双方约定一Data(64DES致的在通信的源点用对核心数据进行加密,然后以密码形式在公共通信网(如电Key,Key DES话网)中传输到通信网络的终点,数据到达目的地后,用同样的对密码数据进行解密,便Key再现了明码形式的核心数据这样,便保证了核心数据(如、等)在公共通信网中传PIN MAC输的安全性和可靠性通过定期在通信网络的源端和目的端同时改用新的便能更进一步提高数据的保密性,Key,这正是现在金融交易网络的流行做法、算法详述2DES算法把位的明文输入块变为位的密文输出块,它所使用的密钥也是位,其功DES646464能是把输入的位数据块按位重新组合,并把输出分为、两部分,每部分各长位,其64L0R032置换规则见下表58,50,12,34,2618,10,2,60,52,44,36,28,2012,4,62,54,46,38,30,22/4,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,else**p+i+j=**p+i-l+j+l;elseforj=0;j=27;j++ifj==26**p+i+j=**p+i-1+0;else ifj==27**p+i+j=**p+i-l+l;else**p+i+j=**p+i-l+j+2;/*1**1**1****\X*■!**1*■!*■!*■!**1**£*■!*-!**1*■!**1**1*\1*•!**!**1*■1*■!*■!**1*•£*■!*-!*■!**1*■!**1*■!**L*\1*•!**!**1*■!**1****/,卜•卜・卜♦卜♦;•,;■♦1•■卜♦卜・卜;、•[••1••卜♦卜♦卜•;、*.»,;•,I、•卜♦卜•;•♦;•,卜・卜♦卜•;•♦1••卜♦卜・卜♦;■,・、•;••1••卜♦卜♦卜•;、*.»♦[•*i*•1•♦卜♦卜•卜‘;、*♦卜■卜♦卜,;••[•*1*■卜♦卜・卜•;•;••;••卜♦卜•[、*.»•;••[、•卜合并成完整密钥//CDvoid CD_hebinint*pc_l,int*c
[28],int*d
[28],int iintj;forj=0;jv=27;j++*pc_l+j=**c+i+j;*pc_l+j+28=**d+i+j;/*.L»!*1**1**X»*1**A»*1**.L**L»*1**.£**1**4*/*T**T**T**T**7**T**T**T**T**T**T**T**T**T**T**T**T**T**7**T**T^^T*■X**•.£*/•;•♦卜•[••1•*1*«•*7**T»*T»*卜«•*Tw*T*rT*eTw*Tw«•*7*///提取位密钥48Ka-lvoid PC_2_bianhuanint*kout
[48],int*pc_l,int aint i;fori=0;i=47;i++**kout+a-l+i=*pc_l+PC_2[i]-l;//■«[•,*■T]w・**T1w***g1*****i*»■*[T,■»],*T■w]・«•*1«*•**17**•*£7*、**T1**«■•],«•f**1**i***•T*»*r1T*w■r£T*w«*•1^—L*1**7*■£**T«%1r T*w1**T*w**«•*1**T**7•*7*rT»■«]•・*1«*•*«1•***Z1***•7]•,.]*・T**T*«•*1**1***1T****1T*wrT**1**T**1«•1*■7£****17*、X r*T**1r*T»**17**•*£T*»■*£T*w**1T*w**1Tw«•*i**T»*7**T**Tw*T»«•*1***17***T»*■T]w,■«[•.«•*7*■£*•1*•!*■!**1*■—、X*•£**1**1*■!**1*■*2*■!**1*■1,*1*■!**1*/•卜•卜•[•,[•・;•・;■,.••;■,卜•卜,】•■】•・;••,••;••卜•卜,1•,】••[•,;•r7*/变换//Pvoid P_replaceint*p,int*slint i;fori=0;i=31;i++*p+i=*sl+P[i]-l;//7,〃
7、,*r1j***q..1*rj**1**2**1**4**l7q,.7,〃*、1*rj**J**1*7,7,■1**S**1**L**rL j**7,7,*1*-1**1**1*g*7,q*.1**-!**1*r*jf*q
7.,7,q*、■r!j***r1j***r1j***q
1.*〃、r7j,*7,q*.1**1**17,7,♦1**-!**1**1**1*7,7,7,*1**2****1q.*〃1*、〃7,、7r,j7*,*1q*、q*、1*rj**1*rj**1*rj7*,7r,j*.1*〃、*.1**1*K*7,7,*1*^1**t*7,7,7,*1**1**1*7,7,7,*1**1*K*!7,7,7,■!**4**1*/〃、q、〃、*1*rj*〃、〃、〃、〃、q、*g*/变换后与异或//r.change Ri-l E Ki1void yihuolint*r_change,int*kout
[48],int aint i;fori=0;i=47;i++八〃八按位异或运算符*r_change+i=**kout+a-l+i;//printfM\nH;/si**£**1^/rj*rj**Jw..、rjw*J*rj*rjw rj*♦.、rjwrj**Jw•.、rj*rjw*Jw彳*rj*rj*rj*rj*♦.、rjwrj**JwJJ4rj*rj*K1l^K1T K[、lK1*K71**K£*xf
1、K1[、^K T1w K71^*K7J^*i1K、!
1、K1?、K17*K J»*//盒置换后与异或//Ri PLi-l2void yihuo2int*l
[32],int*r
[32],int*p,int aint i;fori=0;i=31;i++/printfH\nH;/八**r+a+i=**l+a・l+i*p+i;/*1**£**1^*X**£**X**1**1**1*■■£*■!**1**1^*X**2**1^*£**1**1**X**2^*x**1**£**1*■/,卜,卜*j*,7•
4、■.、,1■,卜―卜•】•,.、,/,卜,卜,卜■[、■.、■,、•1••卜・卜•[、*j、,.、,.、■卜,卜
4、■.、,/,卜・卜•
1、•.、,/,卜,卜,卜,j、*j、■.、,;、■[•,卜•[、•[、*j、,.、■.、吓、■卜,卜q、•.、•/•卜,卜・卜•
1、*j、■.、*y*■卜,卜,卜,j、
4、,.、•;、■[••卜・]、■.、*L»*!*•£*/*T**T**T**T**T**T**T**T**T**Tw*Tw*T**Tw*T**T»*7**T**T*/变换后与异或//r_change Ri-1EKi3void yihuo3int*r_change,int*kout
[48],int aint i;fori=0;i=47;i++八*r_change+i=**kout+16-a+i;/•1**1*■£*■!*■!**1*—*£*■!*■!*■!**£*■£*■!*■!*■!**1*■£*■!**1*■■£*■!*■!**1**t*■!**1*-!**1*•1*■£*■£*•!*■!**1*■!**£*■£*■£**1*■!**1**1*■1*•!*■!*、X**1**i**1*/,卜•卜♦卜*7*•;•,;■*T*♦卜•[■♦卜♦卜•;••卜•1••卜•卜♦卜*.»♦;•♦卜■卜♦■、♦;、•卜•卜♦卜•;••1•♦卜・卜•;••;、•[••卜♦卜♦卜♦;、*.»♦:、•1•♦卜♦卜♦,、,;■♦[、■卜*1*•;•,;■•卜•[•♦卜・卜•;•,;、*»*•1••卜♦卜♦卜♦;、*.»♦;、•1•♦卜•,、K£*K1K1/.[、■卜、,、卜.J、•
1、?、rj*q、、•[、.J、T!void IP2int*l
[32],int*r
[32],int*ip_l,int aint i,ip[64J;//printfn a=%2d\n;a;fori=0;iv=31;i++ip[i]=**r+a+i;ip[i+32]=**l+a+i;fori=0;iv=63;i++*ip_l+i=ip[IP_l[i]-l];printfM\nH;/■],■],•[,•[.■]・*1**1*■[,■].■].■].■],\L■姓*1*•[,■]・■]・■]・■£*—X*■£*■],■1・■]・*1**•*•£*■],*1*■],■]./,[•,[•*T*•卜*7**Tw*T**Tw«•*1**T«*
7、*T*rTwTw«•*T**7**T»rT**Tw«•*1**
7、*T*«•«•*7**7•«•*7**
7、*7**T»*Tw•卜*T**T»rTwT**Tw*Tw*7**T**T*«•*7**7•*7**T*rTw*Tw*!•*T»*7wrTwri*rTw«•*T**Jw*7**T»*Tw«•*T*•卜*1**2**2**1**1*/•R•卜〃、....,、•卜
4、*JW..、...,卜
4、/〃得出密文void miwenint*ip_l int ij,a,c,b,x
[8];fori=0;i=7;i++a=i*8;x[i]=0;forj=7;j=0;j-c=*ip_l+a;b=pow2,j;x[i]=x[i]+b*c;〃把密文在数组中为了输出使用miwens[i]=x[i];copy miwensa++;密文为”;//printffori=0;i=7;i++a=x[i]%127;printf,%cn,chara;printfH\nu;//****……K***…*1**1K*.以*.!***1***1*•*1*,.!*.、!*.!*•*1*,■£*、,・、•卜木木宇》,・、*米木•,、,,…K*/,A S•智rj*rjw*Jw*1*rj*rjwrj*rj*rj**JwJwrj*rjw■.、rj*rjw rj*rj*rj**g*rj*rj*rj**J*rjw/si^/void S_replaceint*r_change,int*sl int i,b,j,x,a;//printfn ij xn;forb=0;b=7;b++switchbcase0:i=*r_change+0*2+*r_change+5*1+1;j=*r_change+l*8+*r_change+2*4+*r_change+3*2+*r_change+4+l;x=Sl[i-l]U-l];//printfn%2d%2d%2d\n\i,j,x;fora=3;a=0;a—*sl+a=x%2;x=x/2;break;i=*r_change+6*2+*r_change+11*14-1;j=*r_change+7*8+*r_change+8*4+*r_change+9*2+*r_change+10+1;x=S2[i-l]U-l];//printfn%2d%2d%2d\nn,i,j,x;fora=7;a=4;a-*sl+a=x%2;x=x/2;break;i=*r_change+12*2+*r_change+17*1+1;j=*r_change+13*8+*r_change+14*4+*r_change+15*2+*r_change+16+1;x=S3[i-l]U-l];//printfn%2d%2d%2d\n”,i,j,x;fora=ll;a=8;a—*sl+a=x%2;x=x/2;break;i=*r_change+18*2+*r_change+23*1+1;j=*r_change+19*8+*r_change+20*4+*r_change+21*2+*r_change+22+1;x=S4[i-l][j-l];//print%2d%2d%2d\n\i,j,x;fora=15;a=12;a-*sl+a=x%2;x=x/2;break;i=*r_change+24*2+*r_change+29*1+1;j=*r_change+25*8+*r_change+26*4+*r_change+27*2+*r_change+28+l;x=S5[i-l]U-l];//printfn%2d%2d%2d\n\i,j,x;fora=19;a=16;a—*sl+a=x%2;x=x/2;break;i=*r_change+30*2+*r_change+35*1+1;j=*r_change+31*8+*r_change+32*4+*r_change+33*2+*r_change+34+l;x=S6[i-l][j-l];//printfn%2d%2d%2d\nn,i,j,x;fora=23;a=20;a—*sl+a=x%2;x=x/2;break;i=*r_change+36*2+*r_change+41*1+1;j=*r_change+37*8+*r_change+38*4+*r_change+39*2+*r_change+40+l;x=S7[i-l]U-H;//printfn%2d%2d%2d\n”,i,j,x;fora=27;a=24;a—*sl+a=x%2;x=x/2;break;i=*r_change+42*2+*r_change+47*1+1;j=*r_change+43*8+*r_change+44*4+*r_change+45*2+*r_change+46+l;x=S8[i-l][j-l];//printfn%2d%2d%2d\n\i,j,x;fora=3l;a=28;a—*sl+a=x%2;x=x/2;break;KJ*7,7,7,7,7,/*5*巧、/inti,R_changc
[48],Sl
[32],P
[32],DATA
[64],KEY
[64],PC_l
[56]JP
[64]JP_l
[64],C
[17]
[28],D
[17]
[28],Left
[17]
[32],Right
[17]
[32],key_out
[16]
[48];」,*int*r_change,*sl,*p,*Data,*Key,*pc ip,*ip_],*c
[28],*d
[28],*l
[32],*r
[32],*kout
[48];「d=D;l=Left;Right;二kout=key_out;Key KEY;Data=DATA;pc_l=PC_l;r_change=R_change;sl=Sl;ip=IP;whilel{do”请输入位明文字符printf8scanfn%sH,mingwen;i=strlenming wen;}whilei!=8;//明文二进制转换erjinzhimingwen,Data;do(”请输入位密钥字符)printf8scanfn%sH,key_Origion;i=strlenkey_Origion;}whilei!=8;printfn\nn;//密文二进制eijinzhikey_Origion,Key;//jiamiIP_changeip,Data;//明文变换IPL0_R0ip,l,r;//LO ROPC_1_bianhuanKey,pc_1;//PC_1CDpc_l,c,d;fori=l;i=16;i++//CO DO〃密钥生成时移位LS_yiweic,i;C DLS_yiweid,i;CD_hebinpc_l,c,d,i;PC_2_bianhuankout,pc_l,i;L_Rl,r,i;的扩展变换//EE_changer_change,r,i;yihuo〃1<与长的异或盒替换〃S-〃,盒替换与替换后的数组异或〃L Plr_change,kout,i;S_replacer_change,s1;P_rcplaccp,sl;yihuo2l,r,p,i;IP2l,r,ip_l,i-D;”明文被加密后的密文printf\n;miwenip_l;eijinzhimiwens,Data;//jiemi//密文变换IP_changeip,ip_l;IPLO_ROip,l,r;//LO ROfori=l;i=16;i++|L_Rl,r,i;E_changer_change,r,i;yihuo3r_change,kout,i;与长的异或S_replacer_change,s1;〃1^盒替换〃S-P_replacep,sl;盒替换〃P-yihuo2I,r,p,i;与替换后的数组异或〃L PIP2l,r,ip_l,i-D;密文被解密后还原的明文为:printf\n;miwenip_l;eijinzhimingwen,Data;getchar;”请输入继续加密,输入printf S退出加密E\nH;char cl;scanfH%cn,cl;ifcl==E break;运行结果4“C:\Users\luojiayong\Desktop\des最终版\Debug\des.exe”请输入位明文字符8A ABBCCDD0100000101000001010000100100001001000011010000110100010001000100卜青输入位密钥字符8halloaaa0110100001100001011011000110110001101111011000010110000101100001明文被加密后的密文V92B900100110000000110-100-100000101000000010000-100-1-1-1-10100001000001100密文被解密后还原的明文为WABBCCDD0100000101000001010000100100001001000011010000110100010001000100情输入号继续加密,输入方退出加密情输入位明文字符8AABBCCDD0100000101000001010000100100001001000011010000110100010001000100卜青输入位密钥字符8lu Jiayo0110110001110101011011110110101001101001011000010111100101101111明文被加密后的密文kwkCZb01111111000010000—1—1—1000—10000—10—100001000000—1—1—1—1—1001011010000-1半CiXUsersXluojiayongXDesktopXdesW^^DebugXdes.exeCD情输入号继续加密,输入退出加密T情输入位明文字符8AABBCCDD0100000101000001010000100100001001000011010000110100010001000100情输入位密钥字符:8Luojiayo0110110001110101011011110110101001101001011000010111100101101111明文被加密后的密文^wkCZb01111111000010000-1-1-1000-10000-10-100001000000-1-1-1-1-1001011010000-1留文被解密后还原的明文为^ABBCCDD0100000101000001010000100100001001000011010000110100010001000100情输入号继续加密,输入飞,退出加密Press anykey tocontinue半:即将输入的第位换到第一位,第位换到第位,……,依此类推,最后一位是原来的第585027位、则是换位输出后的两部分,是输出的左位,是右位,L0R0L032R032例设置换前的输入值为则经过初始置换后的结果为D1D2D3……D64,L0=D550……D8;R0=D57D
49...D7经过次迭代运算后,得到、将此作为输入,进行逆置换,即得到密文输出逆26L16R16,置换正好是初始置的逆运算,例如,第位经过初始置换后,处于第位,而通过逆置换,又140将第位换回到第位,其逆置换规则如下表所示40140,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43/1,51,19,59,27,放大换位表34,2,42,10,50,18,5826,33,1,41,9,49,17,57,25,32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,单纯换位表22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1,16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25,在算法描述图中,为选择函数,其功能是把数据变为数据下面fRi,Ki S1,S
2...S86bit4bit给出选择函数的功能表Sii=l,
51.43,1,2/5,11,8,3/0,6/2,5,9,0,7,』』』0/5,7,4/4,230,6,12,1195,3,8,4,1,14,8,13,6,2,11,15,12,9,7310,5,0,』』』
51.52,824,9,7,51,34,10,0,6/3,15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,』3,13,4,7,15,2,8,14,12,0,10,6,9,11,5,』0,14,7,11,10,4/3,5,8/2,6,9,3215,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,』』』』
51.6,9,14,6,35,532,7,11,4,2,8,』,
51.7,0,9,3,4,6,10,2,8,5,14,12,11,1513,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,』』』1/030,6,9,8,7,454,3/1,5,2/2,S4:』』7,13,1430,6,9/0,1,2,8,5,11,12,4,15,13,8,11,5,6,15,0,347,2/2,104,9,10,6,9,0,12/1,7,13,15,1,3,14,5,2,8,4,』』』3,15,0,603,8,9,4511,12,7,2/4,2,12,4,1,7,10,11,6,8,5,3/5,13,0/4,9,14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,470,6,』』』』,432/2,9,550[147,68/3,S7:』』4,11,2,14,15,0,8,13,32,9,7,5,10,6,13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10/5,6,8,0,5,92,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3/2,S8:13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,1037412,5,6,11,0,14,9,2,』』』7,11,4,1,9,12,14,2,0610,13,15,3,5,8,2,1,14,7,4/0,8352,9,0,3,5,611,子密钥()的生成算法
1.Ki48bit初始值为位,但算法规定,其中第、位是奇偶校验位,不参Key64DES81664与运算故实际可用位数便只有位即经过缩小选择换位表的变换后,的DES Key561Key位数由位变成了位,此位分为、两部分,各位,然后分别进行第次循环左645656CO DO281移,得到、将(位)、(位)合并得到位,再经过缩小选择换位从而便得Cl D1,C128D128562,到了密钥(位)依此类推,便可得到、不K048KI K
[64]={40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25};//扩展变换Eint E
[48]={32,1,2,3,4,5,4,5,6,7,8,9,8,9,10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32,1;置换//Pint P
[32]={16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27,3,9,19,13,30,6,22,11,4,25};〃置换选择1」int PC
[56]={57,49,41,33,25,17,9,1,58,50,42,34,26,18,10259,51,43,35,27,19/1,3,60,52,44,36,63,55,47,39,〃置换选择31,23,15,7,62,54,46,38,30,22,14,6,61,53,45,37,29,21,13,5,28,20,12,4};2intPC_2
[48]={14,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,44,49,39,56,34,53,46,42,50,36,29,32;个盒〃8sintSl
[4]
[16]={14,4,13,2,15,11,8,3,10,6,12,5,9,0,7,0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,S2
[4]
[16]={15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,15,12,8,2,4,9,1,7,5,11,3,15,10,0,6,13},3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9},S3
[4]
[16]={10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12},S4
[4]
[16]={7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14},S5
[4]
[16]={2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3},S6
[4]
[16]={12,IJO,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,S7
[4]
[16]={4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12},S8
[4]
[16]={13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,7,11,4,9,12,14,2,0,6,10,13,15,3,5,8,2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11;〃二进制转换void eijinzhicharz
[8],int*q;变换void PC_1_bianhuanint*Key,int*pc_l;//PC_l」,〃把明文分组为、void CDint*pc int*c
[28],int*d
[28];C D〃密钥、的移位void LS_yiweiint*p
[28],int i;L S」,变换void CD_hebinint*pc int*c
[28],int*d
[28],int i;//C D变换void PC_2_bianhuanint*kout
[48],int*pc_l,int a;//PC_2置换void IP_changeint*ip,int*Data;//IP〃把位密钥分为、两组void L_Rint*l
[32],int*r
[32],int i;56L S的扩展变换void E_changcint*r_change,int*r
[32],int a;//E〃异或void yihuolint*r_change,int*kout
[48],int a;1变换void S_replaceint*r_change,int*sl;//S变换void P_replaceint*p,int*sl;//P〃异或void yihuo2int*l
[32],int*r
[32],int*p,int a;2逆置换void IP2int*l
[32],int*r
[32],int*ip_l,inti;//IP〃得出密文void miwenint*ip_l;异或void yihuo3int*r_change,int*kout
[48],int a;//3〃定义三个数组存放明文密钥密文char mingwen
[8],key_Origion
[8],miwens
[8];I!K]K1KT«1K!K!14]K!K!KJ K1\]K£K!KIK|KJKI***KIKK]K]K1K*K{]KI K!K{K1K!K{]*1/«、、«、、*|*«、«、、〃、«、、、、«、、«、、«、、、-J-J*J*,J*4**4*,J*rj*4^*4*f,j,J*4*,J*4*—J-J*4*,J,J*4*-J*«、、-f*,J*4*rj*//二进制转换void eijinzhicharz
[8],int*qchar ch;inti,j,a=7;fori=0;i8;i++ch=z[i];forj=0;j8;j++*q+a=ch%2;ch=ch/2;a--;a=a+16;fori=0;iv=63;i++ifi%8==0printfnn;printf%d”,*q+i;printfu\nn;/.L■姓*1****1^.J*.J*.X*■],/,[•,卜*T**
7、*7*«•«•*7*rTwrTw*Tw«•*1**7*rTwrT*«•rTw«•*
7、*7**Tw*7**
7、*T*«•*1*rTwT*«•«•*7*rT*rTw«•*7**7•*7**T*rTw*Tw*!•*T**T**
7、*T*«•«•«•*T*V、*7*■卜,卜■卜***/•q•卜*J、〃、..、.,、•卜q、*j、*j、,•、,,、,卜,卜q、*j、
4、..、*j、/变换//IPvoid IP_changeint*ip,int*Dataint ij;fori=l;i=64;i++j=58-i/33+2*i-l/8%4-8*i-l%8;*ip+i-1=*Data+j-1;/******************************************************************************•£*•£,•[.•[・*1・*1*****1*■],1*■],/«Tw•*Jw*Tw*TwrTwri*riw•[••[••;••[••卜•[•,]••;•■[•*Jw]〃提取分组LO,ROvoid L0_R0int*ip,int*1
[32],int*r
[32]inti;fori=0;i=31;i++**l+i=*ip+i;}fori=0;i=31;i++二**r+i*ip+i+32;/******************************************************************************.I”7,7,1**1**1**1*■£**1**1**1**1*/rTw、rj*rj*rjw*4*///Li=Ri-lvoid L_Rint*l
[32],int*r
[32],intiintj;forj=0;j=31;j++**l+i+j=**r+i-1+j;//printfn\nn;/******************************************************************************7,*1**1*KT7,7,7,7,!/«、«、〃、〃、、/*4**4**4**4**4*变换//E voidE_changcint*r_changc,int*r
[32],int a{inti;fori=0;i=47;i++一二*r_change+i=r+a-1+E[i]-1;//printfn\nM;I/«、-J、-J*«、J*K!1,J、4,]J、K*!4*K*!1*«、,J、
4、,J**1*rj*,J*4^*K41**1*«、,J、f、,j、,J、f«、\,]J、K*£4*K q!**K|I*«K、|—JK、J*4*KI*j三*«K、I,JK*K]K]K1K1K1K]K*K1«K{]KIKJK!K{K]K,J J、,J、«、,J、*4*rK j1*K!K{]*1*1*KL*7,7,*1**1**1**1*■£*7,7,7,*1**1**1**1*7,7,7,*1**1**1*■£7,■1・7,*1**1*/q、q、rj*〃、力•〃、q、〃、/变换//PC_1void PC_1_bianhuanint*Key,int*pc_lint i;fori=0;i=55;i++*pc_l+i=*Key+PC_l m-1;/KI^vl^*2^KIZ*2^*2^*1^*1^/*J*..、rj*4*4*rjw rj*rj**J**Jw rj*rj*rj*rjwrj**Jw♦.、rj*rjw*Jw rj*rj*rj*rj*rj*rj*rj*rjw rj*rj**JwJ*■.、*l qK、|7j,、7*,4**1**S***J1****11**q.〃、7,、7,**21****41***1**1K q
1.q7,、、*1J.**1*//•q•卜一2**J、**1J*、*.X.*、.,、•[•*£•卜**qx、^*j*、1**j*w1*..、*
1..*、•卜,卜*X q*、q*、2^
4、*/2*%r«*1*/〃密钥生成时移位CDvoid LS_yiweiint*p
[28],int iintj;ifi==l||i==2||i==9||i==16forj=0;j=27;j++ifj==27**p+i+j=**p+i-l+O;//提取密钥的初始CO,DO」,void CDint*pc int*c
[28],int*d
[28]inti;fori=0;i=27;i++**c+i=*pc_l+i;**d+i=*pc_l+i+28;//,[■•],,[•■]*,T**•1卜**7***•T*w■*〜T■*[,*T\w],«•■]*,1*■1*,T«*•7£、*■T]*,r■T]w,■T]w・•«£•**■T[*,*7**T»rT*•*]T.w•«]•・**11*■*]7,、*■T]*・•]«,•«•*7**7•*••[*,T*■]«・■•]・*■7]*・*
7、*7*•*£T»■*£T*w■•卜].*■T]*・〃■•],*T»*T»rTwT**T*w1**T*w1**7■*、*X T*»■*£T***T*«•.X**7*«*17«•**17**■]*,T*■£r*TwL*T-wL•*!••£**T»*7wrTwri■*]■rT■w].«•.*1T**■*Jw*•**7*•£*T»■*]T,w■«]•,*•T]*・**•T**。
个人认证
优秀文档
获得点赞 0