版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DES加解密算法商晴庆2013210684赵建博2013210695申文博20132106761算法思想2算法原理3主要代码目录1算法思想2算法原理3主要代码101Application02Application03Application04Application混淆和扩散原则
尽可能使密文和加密密钥之间的统计关系更加复杂,以阻止攻击者拥有一些密文的统计特性。迭代结构
使其结构清晰,调理清楚,算法为对合运算,便于实现,运行速度快。基于Feistel结构
优点:由于它是对称的密码结构,所以对信息的加密和解密的过程就极为相似,甚至完全一样。乘积密码乘积密码是指依次使用两个或者两个以上的基本密码,所得结果的密码强度将强于单个密码的强度。
1算法思想1算法思想2算法原理3主要代码22.12.22.3密钥生成算法原理BUSINSSINFOGRAPHICS加密操作解密操作22.1子密钥生成原理图取得密钥等分密钥密钥移位密钥选取迭代16次2.1子密钥生成步骤64位密钥,去除64位密码中作为奇偶校验位,剩下56位。56位输入密钥分成均等的A,B两部分,每部分为28位。按表,在第i次迭代时密钥循环左移相应的的位数。进行16次迭代,得到16个子密钥。左右两部分通过置乱合并得到56位,再压缩成48位,与明文异或操作。2.2加密操作原理图取得数据初始换位数据扩展数据压缩数据换位2.2加密操作步骤按照置位表进行换位通过S盒,将右48位明文从6*8变换成4*8=32位64位均分成左右部分各32位,并将右32位扩展成48位进行IP置换,得到新的64位明文取得64位的明文数据块2.2交换数据迭代16次数据整理按照表进行IP逆置换,得到密文进行16次相同的操作将变换好的左右32位进行交换2.2加密操作S盒原理图DES解密2.3解密操作解密可以表示为:与加密进行完全相反的操作顺序即可,这也充分体现了对称密码结构的方便性。1算法思想3主要代码32算法原理A重要接口函数说明3这个函数中将输入值,按照Table表的顺序转换,最后赋值到输出函数中,是算法中比较重要的一个函数,因为des算法中多次需要表顺序打乱。voidTransform(bool*Out,bool*In,constchar*Table,intNumber){for(inti=0;i<Number;++i)CC[i]=In[Table[i]-1];memcpy(Out,CC,Number);}置乱函数B重要接口函数说明3voidDES_Main(charOut[8],charIn[8],constPS_KeyPS_Key,boolType){staticboolM[64],CC[32],*Li=&M[0],*Ri=&M[32];//M用于存储64位二进制,输入的是8位英文。ChangeToBit(M,In,64); //转换Transform(M,M,IP_Table,64);//按表进行换位。if(Type==ENCRYPT){//判断是否加密for(inti=0;i<16;++i){memcpy(CC,Ri,32);//Ri转换到CC中F_funchange(Ri,(*PS_Key)[i]);//PS_Key存储子密钥Xor(Ri,Li,32);//R和L异或memcpy(Li,CC,32);//将这次的R放入下次的L}}else{for(inti=15;i>=0;--i){memcpy(CC,Li,32);F_funchange(Li,(*PS_Key)[i]);Xor(Li,Ri,32);memcpy(Ri,CC,32);} }Transform(M,M,IPR_Table,64);ChangeToByte(Out,M,64);}加解密函数函数现将输入的8位数值进行转换ChangeToBit(M,In,64),再开始初始置换,接着判断是否加密,加密时,按加密步骤,解密时,执行加密相反步骤。C重要接口函数说明3输入了32位的R边之后,通过E表的转换,再与密钥进行异或操作,再通过S盒的置换最后P表转换。这个函数通过DES_MAIN调用而使用,这个函数完成了DES大部分操作。voidF_funchange(boolIn[32],constboolKi_table[48]){staticboolMR[48];Transform(MR,In,E_Table,48);Xor(MR,Ki_table,48);S_Change(In,MR);Transform(In,In,P_Table,32);}主变换函数D重要接口函数说明3利用对字符串的赋值来实现,先将In将被移走的数赋值到一个保持的数CC中,然后将In除去移走的位数移给In,然后将开始保存的数赋值给In的右边几位。voidRollRight(bool*In,intNumber,intloop){memcpy(CC,In,loop);memcpy(In,In+loop,Number-loop);memcpy(In+Number-loop,CC,loop);}循环左移函数E重要接口函数说明3ChangeToBit中,将Byte转换成8位机器码,同理ChangeToByte将8位机器码转换为1个字母。voidChangeToBit(bool*Out,constchar*In,intBs){for(inti=0;i<Bs;++i)Out[i]=(In[i>>3]>>(i&7))&1;}voidChangeToByte(char*Out,constbool*In,intBs){memset(Out,0,Bs>>3);for(inti=0;i<Bs;++i)Out[i>>3]|=In[i]<<(i&7);}比特转换函数F重要接口函数说明3完成多次的DES算法加密,达到更高的加密效果,进行判断,若Is3DES为真,则开始多重加密。boolDES::Des_Start(char*Out,char*In,longdataNumber,constchar*Key,intkeyNumber,boolType){if(!(Out&&In&&Key&&(dataNumber=(dataNumber+7)&0xfffffff8))) returnfalse; GetAndSetKey(Key,keyNumber); if(!Is3DES){//1次DES for(longi=0,j=dataNumber>>3;i<j;++i,Out+=8,In+=8) DES_MAIN(Out,In,&MiniKey[0],Type); //一次DES加密::解密 }else{//3次DES加密:加(key0)-解(key1)-加(key0)解密::解(key0)-加(key1)-解(key0) for(longi=0,j=dataNumber>>3;i<j;++i,Out+=8,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国际战略研究中心报告:制裁对俄罗斯经济的影响和对中国实施制裁的教训
- 冠心病的中医护理
- 化妆培训课件
- 2024年度产品加工风险管理协议
- 高尔夫球场护坡施工方案
- 航空公司乘客满意度分析方案
- 医疗行业客户档案管理制度
- 企业员工餐饮食品留样制度
- 学校食堂疫情防控预案
- 2024年度某大型商场门窗安装工程承包劳务合同
- 数列求和-裂项相消法教学设计-高三数学一轮复习
- 马王堆导引术独立彩图版
- 小学一年级语文上学期教研活动记录(10次)
- GB/T 34946-2017C#语言源代码漏洞测试规范
- GB/T 31315-2014机械结构用冷拔或冷轧精密焊接钢管
- GB/T 30790.4-2014色漆和清漆防护涂料体系对钢结构的防腐蚀保护第4部分:表面类型和表面处理
- GB/T 15048-1994硬质泡沫塑料压缩蠕变试验方法
- XX项目不动产权籍调查技术设计书
- 文明厕所主题班会课件
- 小学语文人教六年级上册“走近鲁迅”群文阅读课件
- 篮球场改造工程施工组织设计方案
评论
0/150
提交评论