- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DES加解密算法实现
一、实验目的
在这一实验中,用VC++实现DES加解密算法。完成实验后,将能够深入理解DES加解密算法及其在VC++中的实现过程。
二、实验条件
熟悉VC++开发环境和有关DES算法知识,安装了VC++6.0系统的计算机。
三、任务描述
对数据进行加密传输能有效地保证数据的机密性,DES算法是一个保护数据的机密性的经典算法,本实验在VC++环境中实现DES算法。在VC++中建立一个项目,并将资料盘中的DES程序代码添入项目中,实现加/解密功能。
四、操作步骤
1.进入Microsoft Vilual C++ 6.0系统界面,选择菜单中的File--New,出现New对话框。
2.在对话框中,选择Projects页,在左侧的列表中选择MFC AppWizard[exe],在Project name文本框中输入新建项目的名称,如DES加解密算法,在Location文本框中选择项目存储路径。单击OK按钮出现MFC AppWizard-step1对话框。
3.在对话框中,选择Dialog based,单击Next按钮。
4.之后出现的对话框MFC AppWizard-step 2 of 4、 MFC AppWizard-step 3 of 4中均单击Next按钮。MFC AppWizard-step 4 of 4中单击Finish,出现New Project Information对话框。单击OK按钮,一个新项目就建成了。
5. 在对话框上添加控件资源,如图1所示。
6.在VC++菜单中选择View中ClassWizard命令,为控件资源定义变量,出现对话框。可以看到类的所有可被定义变量的控件资源,为每个资源分别定义变量。如:在列表中选择IDC_EDIT1,然后单击Add Variable按钮,在其后出现的对话框中输入变量名即可。
图1 DES加密解密对话框
7.添加其他变量,右击CDESDlg在弹出的菜单中选择Add Member Variable…命令,在新出现的对话框中,输入变量类型、变量名,选择变量的访问类型。
8.添加方法。双击按扭控件,可为其添加方法。
9.将方法中程序代码补充完整。
将# include“math.h”添加到DES加解密算法Dlg.cpp的头部。
10.项目完成,编译运行。点击“保存”按钮,将实验结果保存在指定文件如“试验数据.txt”中。
五、实验原理
1.DES算法描述
DES是一个16轮的Feistel型结构密码,它的分组长度为64bit,用一个56bit的密钥来加密一个64bit的明文串,输出一个64bit的密文串。其中,使用密钥为64bit,实用56bit,另8位用作奇偶校验。加密的过程是先对64位明文分组进行初始置换,然后分左、右两部分分别经过16轮迭代,然后再进行循环移位与变换,最后进行逆变换得出密文。加密与解密使用相同的密钥,因而它属于对称密码体制。
图2给出了DES过程框图。假设输入的明文数据是64比特。首先经过初
始置换后把其左半部分32比特记为L0, 右半部分32比特记为R0,即成了置换后的输入。然后把R0与密钥产生器产生的子密钥K1进行计算,其结果记为f(R0, K1)
明文x=x
明文x=x1,x2,…,x64
逆初始置换IP-1
密文y=y1,y2,…,y64
密钥K,64位
32
32
16轮迭代
48位
56位
PC_1
PC_2
初始置换IP
图2 DES加密算法
再与L0进行模2加得到L0异或f(R0, K1),把R0记为K1放在左边,而把L0异或f(R0, K1)放在右边,从而完成了第一轮的迭代运算。在此基础上重复上述的迭代过程,一直迭代至第16轮。所得的第16轮迭代结果成为预输出,最后经过初始置换的逆置换运算后得到密文。下面会详述DES加密过程中的基本运算。
2.DES中的初始置换IP与逆置换IP_1
对于要加密的明文串64比特,初始置换把原来输入的第58位置换成第1位,原输入的第50位换为第2位,…, 把原输入的第7位置换成第64位,即最后一位。同样的逆初始置换是以预输出作为它的输入,该置换的输出以预输出块的第40位作为它的第1位,…,而以25位作为它的最后一位。
IP[65]={58,50,42,34,26,18,10,2, IP_1[65]= {40,8,48,16,56,24,64,32,
60,52,44,36,28,20,12,4, 39,7,47,15,55,23,63,31,
62,54,46,38,30,22,14,6, 38,6,46,14,54,22,62,30,
64,56,48,40,32,24,16,8,
文档评论(0)