- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 内蒙古鄂尔多斯准格尔经济开发区(大路产业园)区域性地震安全性评价报告.docx VIP
- 部编版六年级语文上册《夏天里的成长》课件.pptx
- 山西省2020年中考数学试题(Word版,含答案与解析).pdf VIP
- 长沙市雅礼中学2023-2024学年高二上学期期中考试物理试题及参考答案.pdf VIP
- 精品解析:山东省菏泽市2023-2024学年高二上学期11月期中化学试题(解析版).docx VIP
- 离婚协议书标准版下载[汇编].pdf
- 2023年山东省青岛西海岸新区自然资源局遴选劳务派遣人员69人笔试参考题库(共500题)答案详解版.docx
- 消融电极产品技术要求模板.docx
- YBT 6016-2022球墨铸铁管绿色工厂评价要求.pdf
- “双减”背景下家校共育的问题及策略.doc
文档评论(0)