des算法实验报告_第1页
des算法实验报告_第2页
des算法实验报告_第3页
des算法实验报告_第4页
des算法实验报告_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《计算机安全技术》实验报告

一、实验内容:des加密解密算法实现二、实验环境:1、操作系统:WindowsXP及以上2、编程工具:VisualC++6.0三、实验原理:DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位,使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。基本原理:其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。四、算法流程设计:1、DES算法整体结构:2、16轮迭代:3、子密钥产生:4、f函数:五、算法实现:1、部分函数定义:staticvoidF_func(boolIn[],constboolKi[]);//F函数staticvoidS_func(boolOut[],constboolIn[]);//S盒代替staticvoidTransform(bool*Out,bool*In,constchar*Table,intlen);//变换staticvoidXor(bool*InA,constbool*InB,intlen);//异或staticvoidRotateL(bool*In,intlen,intloop);//循环左移staticvoidByteToBit(bool*Out,constchar*In,intbits);//字节组转换成位组staticvoidBitToByte(char*Out,constbool*In,intbits);//位组转换成字节组staticvoidBitToHex(char*Out,constbool*In,intbits);//将二进制转换为十六进制2、主要功能模块:voidDes_SetKey(constcharKey[]){//生成子密钥staticboolK[64],*KL=&K[0],*KR=&K[28];ByteToBit(K,Key,64);for(inti=0;i<16;i++) {RotateL(KL,28,LOOP_Table[i]);//循环左移RotateL(KR,28,LOOP_Table[i]);Transform(SubKey[i],K,PC2_Table,48);//PC2变换}}voidDes_Run(charOut1[],charOut2[],charIn[],boolType){//des加密解密过程staticboolM[64],Tmp[32],*Li=&M[0],*Ri=&M[32];ByteToBit(M,In,64);Transform(M,M,IP_Table,64);//IP置换if(Type==ENCRYPT){//加密for(inti=0;i<16;i++){memcpy(Tmp,Ri,32);F_func(Ri,SubKey[i]);//F函数Xor(Ri,Li,32);//异或memcpy(Li,Tmp,32);}}else{//解密for(inti=15;i>=0;i--){memcpy(Tmp,Li,32);F_func(Li,SubKey[i]);//F函数Xor(Li,Ri,32);//异或memcpy(Ri,Tmp,32);} }Transform(M,M,IPR_Table,64);//IP-1置换BitToByte(Out1,M,64);//Out1为字符形式密文 BitToHex(Out2,M,64);//Out2为十六进制数形式密文}voidF_func(boolIn[],constboolKi[]){//F函数staticboolMR[48];Transform(MR,In,E_Table,48);//E扩展Xor(MR,Ki,48);//异或密钥S_func(In,MR);//S盒代换Transform(In,In,P_Table,32);//P置换}3、调试中遇到的问题及解决办法问题:通过BitToByte()函数转换只能看到字符形式的密文,为乱码。解决办法:增加一个二进制和十六进制之间的转换函数BitToHex(),即可输出十六进制数形式的密文。六、实验结果

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论