des加密算法C++实现.doc

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DES加密算法的C++实现 实验一 1、实验题目 利用C/C++编程实现DES加密算法或MD5加密算法。我选择的是用C++语言实现 DES的加密算法。 2、实验目的 通过编码实现DES算法或MD5算法,深入掌握算法的加密原理,理解其实际应用 价值,同时要求用C/C++语言实现该算法,让我们从底层开始熟悉该算法的实现过程 3、实验环境 操作系统:WIN7旗舰版 开发工具:Visual Studio 2010旗舰版 开发语言:C++ 4、实验原理 DES加密流程: 如上图所示为DES的加密流程,其中主要包含初始置换,压缩换位1,压缩换位2,扩展置换,S盒置换,异或运算、终结置换等过程。 ( 初始置换是按照初始置换表将64位明文重新排列次序 ( 扩展置换是将原32为数据扩展为48位数据,它主要由三个目的: 1、产生与子密钥相同的长度 2、提供更长的结果,使其在加密过程中可以被压缩 3、产生雪崩效应,使得输入的一位将影响两个替换 ( S盒置换是DES算法中最核心的内容,在DES中,只有S盒置换是非线性的,它比DES 中其他任何一步都提供更好的安全性 ( 终结置换与初始置换相对应,它们都不影响DES的安全性,主要目的是为了更容易将 明文与密文数据一字节大小放入DES的f算法中 DES解密流程与加密流程基本相同,只不过在进行16轮迭代元算时,将子密钥生成的K的次序倒过来进行迭代运算 5、实验过程记录 在对DES算法有了清晰的认识后,编码过程中我将其分为几个关键部分分别进行编码,最后将整个过程按顺序执行,即可完成DES的加密,代码的主要几个函数如下: //Byte转为Bit ByteToBit(ElemType ch,ElemType bit[8]) //Bit转为Byte BitToByte(ElemType bit[8],ElemType ch) //初始置换 InitialEX(ElemType Inorder[64],ElemType Disorder[64]) //终结置换 AntiEx(ElemType Disorder[64]) //扩展置换 ExpandEX(ElemType RightMsg[32],ElemType ExpandMsg[48]) //16轮迭代加密 MoveLeft(ElemType C[28],ElemType D[28],ElemType L0[32],ElemType R0[32]) //16轮迭代解密 mMoveLeft(ElemType C[28],ElemType D[28],ElemType L0[32],ElemType R0[32]) //生成48位子密钥 GetCD48(ElemType C[28],ElemType D[28],ElemType Secret[48]) //48位明文与子密钥进行异或运算 XOR(ElemType ExpandMsg[48],ElemType Secret[48],ElemType Result[48]) //S盒四位输出 getSOut(ElemType Result[48],ElemType Sout[32]) //直接置换 DirExchange(ElemType Sout[32],ElemType DirOut[32]) //Li与Ri进行抑或运算 XORLR(ElemType DirOut[32],ElemType Left[32],ElemType Result[32]) 函数执行次序和调用关系关系如下: 6、实验结果 1、根据提示,输入任意8字节的原文,并将其转换为64为二进制明文: 2、将64为二进制明文进行初始置换: 3、将原64位明文分成左右两半,并对右半边进行扩展置换: 4依次获得子密钥。按上述流程完成16轮迭代运算后进行终结置换,得到64位密文(整个过程设计数据过多,没有一一输出,只给出最终截图内容) 5、按1开始进行解密,流程与加密相同,中间过程省去,只给出最终结果: 7、实验总结 通过完成本实验,我详细了解了DES算法的实现过程和工作原理,相比较在课堂上学到的理论知识,我认为通过实践后掌握的更加深刻。在课堂上我们学习DES算法,很多都是基于理论上的知识,但并没有真正的使用过DES,而通过编码实现DES,我们更好地理解了该怎么用DES去解决实际问题,这对我们以后的学习是很有帮助的,掌握了DES的算法实现后,我们在以后写到相关程序时可以快速的将其利用,使其真正的为我们服务。 8、源代码(见附录) 附录(DES源代码) // DES.cp

文档评论(0)

kakaxi + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档