基于Matlab的DES算法说明书_第1页
基于Matlab的DES算法说明书_第2页
基于Matlab的DES算法说明书_第3页
基于Matlab的DES算法说明书_第4页
基于Matlab的DES算法说明书_第5页
已阅读5页,还剩8页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1洗手洗手洗手洗手洗手洗手洗手密码学与网络安全课程实验洗手利用MATLAB语言实现DES加密算法洗手洗手洗手洗手洗手洗手洗手洗手洗手洗手洗手洗手洗手姓名BEEFZA学号BEEFXXXXX洗手2洗手3实验目的洗手4牢固掌握DES密码算法洗手通过编程实现DES算法,吃饭深入掌握现代密码算法实现的基本方法洗手验证DES算法中各个模块在实现混淆和弥散中的作用洗手实验内容要求洗手DES算法实现BEEF利用MATLAB语言实现DES密码算法,吃饭输入64比特明文和56比特密钥,吃饭加密得到64比特的密文;BEEF洗手DES弱密钥验证BEEF观察弱密钥两次加密的结果,吃饭与非弱密钥两次加密的结果进行比较;BEEF洗手DES算法初步应用BEEF尝试加密一个字符串,吃饭字符串的长度大于8个字节;BEEF洗手DES弥散特性分析BEEF试输出每一轮加密得到的比特序列,吃饭并比较当初始明文1个比特发生变化时,吃饭每一轮加密输出的哪些比特发生变化。洗手洗手实验方案与步骤洗手DES算法实现洗手算法实现方案洗手MATLAB(矩阵实验室)是一款工程计算用的软件,吃饭功能十分强大。洗手MATLAB的计算基于矩阵,吃饭而DES算法用矩阵描述是十分简洁方便的。洗手因此,吃饭选用MATLAB作为算法实现语言,吃饭基于一系列的矩阵变换、BEEF运算来实现DES算法的加密。洗手洗手主要功能实现流程及代码解析洗手加密程序洗手F第1轮L1R1F第I轮LIRIF第N轮LNRNK1KIKN明文2W比特W比特W比特L0R0密文2W比特选择扩展运算E选择压缩运算S置换运算PLIRIRI1LI1KI483248324832325图1DES基本结构洗手DES算法的结构非常简单,吃饭是一个16次的迭代。洗手核心是函数中一系列F变换。洗手洗手根据算法框图,吃饭程序步骤主要分为三大部分BEEF洗手输入明文和密钥进行字符转换洗手产生16轮密钥矩阵洗手16轮迭代洗手DEMO5M洗手CLC,CLEARALLBEEF洗手洗手第一步输入明文和密钥洗手M0123456789ABCDEFBEEF洗手K0123456789ABCDEFBEEF洗手MBBEEF洗手FORI116洗手MIMIBEEF洗手MBI0000,DEC2BINHEX2DECMIBEEF洗手MBIMBIEND3ENDBEEF洗手MBISTR2NUMMBI1,STR2NUMMBI2,STR2NUMMBI3,STR2NUMMBI4BEEF洗手MBMB,MBIBEEF洗手END洗手MMBBEEF转化为64位二进制明文洗手KBBEEF洗手FORI116洗手KIKIBEEF洗手KBI0000,DEC2BINHEX2DECKIBEEF洗手KBIKBIEND3ENDBEEF洗手KBISTR2NUMKBI1,STR2NUMKBI2,STR2NUMKBI3,STR2NUMKBI4BEEF洗手KBKB,KBIBEEF洗手END洗手KKBBEEF转化为64位二进制密钥洗手洗手洗手第三步产生密钥洗手PC_157,49,41,33,25,17,9,1,58,50,42,34,26,18,10,2,59,51,43,35,27,19,11,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,4BEEF洗手PC_1置换矩阵56位洗手7KEY0KPC_1BEEF初始矩阵变换64TO56洗手循环移位洗手SHIFT_ARRAY1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1BEEF洗手C1,KEY0128BEEFC0洗手D1,KEY02956BEEFD0洗手FORI217洗手CI,CIRCSHIFTCI1,SHIFT_ARRAYI1BEEF前28位循环移位CIRCSHIFT是右移移动负数位表示左移洗手DI,CIRCSHIFTDI1,SHIFT_ARRAYI1BEEF后28位循环移位洗手END洗手PC214,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,32BEEF洗手KIZEROS16,48BEEF洗手循环移位洗手KEY_MATC,DBEEF1756洗手KEY_MATKEY_MAT217,BEEF1656洗手PC_214,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,32BEEF洗手FORI116洗手KII,KEY_MATI,PC_2BEEF洗手END洗手KEYKIBEEF洗手洗手第四步FEISTEL结构洗手IP58504234261810260524436282012462544638302214664564840322416857494133251791595143352719113615345372921135635547393123157BEEF洗手IP初始置换矩阵洗手MMIPBEEF初始置换洗手M0_LM132BEEF输入的左半部分明文洗手M0_RM3364BEEF输入的右半部分明文洗手L,RFCHANGEM0_L,M0_R,1,KEYBEEF洗手MIL,RBEEF洗手MI2_HEX1,MI洗手进入16轮迭代洗手FORI216洗手L,RFCHANGEL,R,I,KEYBEEF洗手MIL,RBEEF洗手MI2_HEXI,MI洗手END洗手洗手IP_1408481656246432397471555236331386846145422623037545135321612936444125220602835343115119592734242105018582633141949175725BEEF洗手IP_1初始逆置换矩阵洗手M16R,LBEEF最后一步进行交换洗手CM16IP_1BEEFIP逆置换洗手M_HEXM_2_HEXC转化为16进制输出密文FCHANGEM洗手FUNCTIONLI,RIFCHANGELI_1,RI_1,M,KEY洗手第I轮F函数的实现输入RI1表示第I1轮的右半部分密文输出第I轮的密文RI_1_EXTRM32_TO_48RI_1BEEF第一步右半明文进行32TO48扩展OKRI_1_EX2RESHAPERI_1_EX,1,48BEEF将扩展的48位变为向量OKFBITXORKEYM,RI_1_EX2BEEF与第I轮密钥按位异或洗手F1RESHAPEF,6,8BEEF变为矩阵8个6位二进制数86洗手经过S1盒洗手SS_BOX1BEEF洗手X2F11,1F11,6BEEFS盒纵坐标Y8F11,24F11,32F11,4F11,5BEEF洗手S盒横坐标洗手F2SX1,Y1BEEF取S盒中某一数洗手F2_BIN0000,DEC2BINF2BEEF字符串处理洗手F2_BINF2_BINEND3ENDBEEF洗手F2_1STR2NUMF2_BIN1,STR2NUMF2_BIN2,STR2NUMF2_BIN3,STR2NUMF2_BIN4BEEF洗手省略S2S8盒洗手RI_1_PP_EXCHANGEF2SBEEF转化为向量并置换运算P洗手RIBITXORLI_1,RI_1_PBEEFLI_1与F函数后的RI_1进行按位异或洗手LIRI_1BEEF交换位置洗手END程序见DEMO5M。洗手洗手洗手解密程序洗手DES算法设计巧妙也体现在其解密过程非常简单,吃饭结构和加密算法完全一样,吃饭只需要将16轮加密所用的密钥完全倒过来。洗手洗手对密钥矩阵16X64的行倒序排列,吃饭得到倒过来后的密钥矩阵。洗手其余部分与解密程序洗手保持一致即可。洗手解密时,吃饭输入密文和密钥,吃饭得到明文。洗手洗手程序见DEMO5_INVM。洗手洗手加密64比特明文,吃饭对密文进行解密得到明文,吃饭观察是否与初始明文一致洗手加密。洗手这里用MATLAB中的GUI界面编写了加解密的交互程序。洗手交互程序见DESECBM。洗手洗手在程序DEMO5M中输入64比特明文及64比特密钥洗手M0123456789ABCDEFBEEF洗手9K0123456789ABCDEFBEEF洗手运行洗手M_HEX56CC09E7CFDC4CEF洗手图2DES_DEMOGUI界面洗手洗手解密BEEF洗手在程序DEMO5_INVM中输入64比特密文及64比特密钥洗手M56CC09E7CFDC4CEFBEEF洗手K0123456789ABCDEFBEEF洗手运行洗手M_HEX0123456789ABCDEF洗手洗手将密文解密后与初始明文一致。洗手洗手为了证明程序对DES算法的正确实现,吃饭用密码学习软件CRYPTOOL进行了验证。洗手洗手加密结果与本程序一致。洗手洗手图3CRYPTOOL加密结果洗手洗手DES弱密钥验证洗手用选定的弱密钥进行两次加密,吃饭观察得到的结果洗手用已知四个弱密钥中的一个FFFFFFFFFFFFFFFF,吃饭对0123456789ABCDEF进行加洗手密BEEF洗手M0123456789ABCDEFBEEF洗手KFFFFFFFFFFFFFFFFBEEF洗手M_HEX6DCE0DC9006556A3洗手再次加密BEEF洗手M6DCE0DC9006556A3BEEF洗手KFFFFFFFFFFFFFFFFBEEF洗手M_HEX0123456789ABCDEF洗手可以看出,吃饭两次加密后密文和第一次的初始明文一样,吃饭相当于是加密后再解密。洗手洗手10验证了弱密钥。洗手洗手用选定的非弱密钥进行两次加密,吃饭观察得到的结果洗手用已知四个半弱密钥中的一个01FE01FE01FE01FE和对0123456789ABCDEF进行加密BEEF洗手M0123456789ABCDEFBEEF洗手K01FE01FE01FE01FEBEEF洗手M_HEX8A76C7A4F16D47ED洗手再用与01FE01FE01FE01FE对应的半弱密钥FE01FE01FE01FE01FE01加密BEEF洗手M8A76C7A4F16D47EDBEEF洗手KFE01FE01FE01FE01BEEF洗手M_HEX0123456789ABCDEF洗手可以看出,吃饭一对半弱密钥能够互相加解密。洗手洗手DES算法初步应用洗手任意选定一个长度大于8个字符的字符串,吃饭设计一种方法对这个字符串进行加密洗手用电码本模式ECB直接对明文分成以64位一组的块,吃饭这里用密文分组链接模洗手式CBC来实现。洗手洗手算法步骤BEEF洗手对任意长(MBIT)明文分成N组,吃饭每组64BIT洗手初始向量IV与第一组明文异或洗手第I1组密文与第I组明文异或作为DES的输入明文洗手迭代N1次洗手得到N64BIT密文,吃饭截取为MBIT洗手算法框图为BEEF洗手图4DES_CBC模式基本结构洗手洗手程序编写主要实现对任意长明文分组,吃饭以及对DES外围结构的改变。洗手主要代码如下BEEF洗手M0123456789ABCDEF0123456789ABCD0123456789ABCDEF0123456789ABCDBEEF洗手任意长明文洗手K0123456789ABCDEFBEEF密钥洗手IV11223344AABBCCDDBEEF初始向量洗手明文分组洗手11ACEILLENGTHM/16BEEF向上取整洗手MBMBEEF洗手FORI116ALENGTHM洗手MBMB0BEEF洗手END洗手MIBEEF洗手FORJ1A洗手MIJ,MB16J1516JBEEF洗手END洗手MBITXORM,IVBEEF算法核心是先按位异或再输入DES程序见MYDESM,吃饭DEMO5_CBCM。洗手洗手洗手运行,吃饭得密文BEEF洗手C_CBC洗手21BC605D513B38E8D8EF6671D93179070D7E6266C1FA5A5210099C143D26洗手与明文等长604BIT。洗手洗手洗手分析你所设计的这种方法有什么优点和/或缺点洗手CBC算法的优点很明显能有效地避免ECB对明文统计特征的泄漏,吃饭因为同一明文块输入DES中的实际明文是不一样的。洗手洗手CBC算法的缺点也是很明显的,吃饭由于其算法结构的限制,吃饭CBC不能实现并行运算,吃饭且误差传递效应比ECB差,吃饭一个密文块损坏,吃饭会引起两个明文块损坏。洗手洗手洗手DES弥散特性分析洗手选择任意64比特明文M,吃饭选择任意56比特密钥K进行加密,吃饭并输出每一轮加密的64比特序列洗手选定明文和密钥,吃饭依次输出每一轮加密输出的密文BEEF洗手明文BEEFM0123456789ABCDEFBEEF洗手密钥BEEFK0123456789ABCDEFBEEF洗手每一轮的加密结果如下表所示BEEF洗手轮数密文轮数密文1F0AAF0AA5E1CEC6325E1CEC6382E13C49382E13C49499542F94499542F90DD64AFB50DD64AFB7036043B67036043BF1470BC27F1470BC2394C8F458394C8F45348DC7469348DC746F37100C610F37100C63C22A9CB113C22A9CB0A37C369120A37C3695C725FFB12135C725FFBF4748AD614F4748AD6CC6C340E15CC6C340EBA88F69916BA88F699FB21FB9C表116轮加密结果洗手随机改变M中的一个比特,吃饭用上述密钥K进行加密,吃饭并输出每一轮加密的64比特序列,吃饭与上一步的结果进行比较,吃饭你发现了什么BEEF洗手洗手将明文BEEFM0123456789ABCDEF中第四位二进制改为1,吃饭则明文变为BEEF洗手M1123456789ABCDEF,吃饭用相同的密钥加密,吃饭用红字标注出前6轮密文中与之前对应相等的位数,吃饭结果为BEEF洗手轮数密文轮数密文1F0AAF0AA5E1DEC6325E1DEC63A3E52C893A3E52C89ECE9D0E24ECE9D0E269DD75C5569DD75C5ABC7850D6ABC7850D0DC7CB6170DC7CB61A75AF6488A75AF64855F4CFF9955F4CFF92689AB42102689AB4249F546141149F546142DFDC287122DFDC287A924514013A924514098AB62F91498AB62F9D4C4149D15D4C4149DC833086F16C833086FAAE41685表3明文改变1BIT后的16轮加密结果洗手洗手首先定性的可以明显看出第一轮密文有1BIT不相等洗手即洗手1616(C)(D)2201()()第二轮密文有7BIT不相等洗手即洗手()()()()即洗手16168()(A)22()()即洗手23()()01()()即洗手5()()0()()即洗手1616()()22()()即洗手48()()()()为了说明弥散特性,吃饭对改变后的16轮密文与之前产生密文进行定量分析(相洗手等位数检查程序见BITCHECKM)洗手轮数相等位数轮数相等位数163257342431530634137358329311022112412301325143415311625表4明文改变1BIT前后的16轮加密结果中相等比特位数洗手洗手由上表可以看出,吃饭随着轮数增加,吃饭初始明文1BIT的改变对于密文的弥散效应越洗手好。洗手理论上,吃饭任意两个64位二进制序列相等时在相等位数为32时概率最大(每一位取0,吃饭1是等概率的),吃饭因此在第四轮之后可认为弥散效应已经使得两组64位二进制序列不具有相关

温馨提示

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

评论

0/150

提交评论