用C实现DES的加密实验报告_第1页
用C实现DES的加密实验报告_第2页
用C实现DES的加密实验报告_第3页
用C实现DES的加密实验报告_第4页
用C实现DES的加密实验报告_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

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

文档简介

一、实验目的1、对算法描述可进行充分理解,精确理解算法的各个步骤。2、完成DES软件算法的详细设计。3、用C++完成算法的设计模块。4、编制测试代码。二、实验内容根据DES加密标准,用C++设计编写符合DES算法思想的加密程序,并进行测试、分析,并尽量考虑程序的优化。三、方案设计DES的总体方案如下图所示。与其他任何一种加密方案一样,加密函数有两个输入:待加密的明文和密钥。在这里,明文的长度必须为64bit,而密钥的长度为56bit.DES加密算法的一般描述观察上图的左边部分,可以看到明文的处理阶段经过了三个阶段。首先64BItde明文经过了一个初始置换IP后,比特重排产生了经过置换的输入。接下来的一个阶段是由对同一个函数进行16次循环组成的,这个函数本身既包含有置换又包含有替代函数。最后一个循环(第16个)的输出由64Bit组成,它是输入明文和密钥的函数,这个输出的左边和右边两个部分经过交换后就得到预输出。最后,预输出通过一个逆初始置换就生成了64bit的密文,这个置换是初始置换的逆置换。上图的右半部分给出了54Bit密钥的使用方式,密钥首先通过一个置换函数,接着对于16个循环的每一个,都通过一个循环左移操作和一个置换草所的组合产生出一个密钥K1。对每一个循环来说,置换函数是相同的,但由于密钥比特的重复移位,产生的子密钥并不相同。(a)初始置换58504234261810260524436282012462544638302214664364840322416857494133251791595143352719113615345372921135635547393123157(b)逆初始置换40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725(c)DES的S盒子的定义:S1413121511831061259071574142131106121195381148136211151297310501512824917511314100613S21518146113497213120510313471528141201106911501471110413158126932151381013154211671205149S3091463155113127114287093461028514121115164981530111212510147101306987415143115212S41314306910128511124158115615034721211014969012117131513145284150610113894511127214S52124171011685315130149141121247131501510398642111101378159125630141181271141163150910453S61211015926801334147511101542712956113140113891415528123704101131164321295151011141750813S7411214150813312975106113017491101435122158614111312371410156805926111381410795015142312S828461511110931450127151381037412561101492114191214206101315358114741081315129035611密钥的产生:(a)舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。置换选择1(PC-1)57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124(b)置换选择2(PC-2)1417112415328156211023191242681672720132415231374755304051453348444939563453464250362932(c)左移调度I:12345678910111213141516左移位数:1122222212222221四、详细设计算法1DES_ENC(X64)ExterualIP,inIP,EXP,POS,SBOX1,……SBOX8GlobalK48[1-16]State64<-IP(x64)Fori<-1to16Do{令state64=SL32||SR32temp48<-EXT(SL32)temp48<=temp48+K48[i]令temp48=t6[1]||t6[2]||t6[3]||t6[4]||t6[5]||t6[6]||t6[7]||t6[8]t4[1]<-SBOX[1](t6[1])t4[2]<-SBOX[2](t6[2])t4[3]<-SBOX[3](t6[3])t4[4]<-SBOX[4](t6[4])t4[5]<-SBOX[5](t6[5])t4[6]<-SBOX[6](t6[6])t4[7]<-SBOX[7](t6[7])t4[8]<-SBOX[8](t6[8])temp32=t4[1]||t4[2]||t4[3]||t4[4]||t4[5]||t4[6]||t4[7]||t4[8]temp32<=POS(temp32)SR32<-temp32(异或)SL32SL32<-SR32}令State64=SL32||SL32State64<-SR32||SL32State64<-invIP(State64)ReturnState64算法2初始置换(IP)IP(X64)ConstArray[1-64],<-{58,50,42,34,26,18,10,2,60,52,44,36,28,20,23,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,26,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}令X64=x1[1]||x1[2]||……||x1[64]Y64=y1[1]||y1[2]||……||y1[64]Fori<-to64do{y1[i]x1[ConstArrayi]}Returny64算法3逆初始置换InvIP(m64)ConstArray[1-64],<-{40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,3,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,38,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25}令X64=m1[1]||m1[2]||……||m1[64]Y64=n1[1]||n1[2]||……||n1[64]Forg<-1to64Do{y1[i]=x1[ConstArray1}Returny64算法4扩展置换EXE(X32)ConsArray[1-48],<-{32,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,1}令X32=x1[1]||x1[2]||……||x1[32]Y64=y1[1]||y1[2]||……||y1[64]Forj<-1to48Do{y1[i]=x1[ConstArray1}Returny48算法5置换函数(P)ConstArray[1-32],<-{16,7,20,2,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,32,27,3,9,19,13,30,6,22,11,4,25}令m32=m1[1]||m1[2]||……||m1[32]Y64=n1[1]||n1[2]||……||n1[32]Fori<-1to32Do{y1[i]=x1[ConstArray1}Returnn32算法6关于S盒算法S盒1SBOX1(M6)ConstArray[0-3],[0-15]<-{14,4,13,1,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,15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13}令m6=m1[1]||m1[2]||……||m1[6]N4<-ConstArray[m1[1]*2+m1[6],m1[2]*8+m1[3]+m1[4]*2+m1[5]]Returnn4S盒2SBOX2(M6)ConstArray[0-3],[0-15]<-{15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8,1,4,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}令m6=m1[1]||m1[2]||……||m1[6]N4<-ConstArray[m1[1]*2+m1[6],m1[2]*8+m1[3]+m1[4]*2+m1[5]]Returnn4S盒3SBOX3(M6)ConstArray[0-3],[0-15]<-{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}令m6=m1[1]||m1[2]||……||m1[6]N4<-ConstArray[m1[1]*2+m1[6],m1[2]*8+m1[3]+m1[4]*2+m1[5]]Returnn4S盒4SBOX4(M6)ConstArray[0-3],[0-15]<-{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}令m6=m1[1]||m1[2]||……||m1[6]N4<-ConstArray[m1[1]*2+m1[6],m1[2]*8+m1[3]+m1[4]*2+m1[5]]Returnn4S盒5SBOX5(M6)ConstArray[0-3],[0-15]<-{2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,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,16,3,15,0,9,10,4,5,3}令m6=m1[1]||m1[2]||……||m1[6]N4<-ConstArray[m1[1]*2+m1[6],m1[2]*8+m1[3]+m1[4]*2+m1[5]]Returnn4S盒6SBOX6(M6)ConstArray[0-3],[0-15]<-{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,4,10,1,13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,5,0,8,13}S盒

温馨提示

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

评论

0/150

提交评论