毕业设计(论文)基于VC++的DES算法的实现.doc

上传人:仙人指路1688 文档编号:3980006 上传时间:2023-03-30 格式:DOC 页数:28 大小:146KB
返回 下载 相关 举报
毕业设计(论文)基于VC++的DES算法的实现.doc_第1页
第1页 / 共28页
毕业设计(论文)基于VC++的DES算法的实现.doc_第2页
第2页 / 共28页
毕业设计(论文)基于VC++的DES算法的实现.doc_第3页
第3页 / 共28页
毕业设计(论文)基于VC++的DES算法的实现.doc_第4页
第4页 / 共28页
毕业设计(论文)基于VC++的DES算法的实现.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《毕业设计(论文)基于VC++的DES算法的实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于VC++的DES算法的实现.doc(28页珍藏版)》请在三一办公上搜索。

1、中国人民解 放 军电子工程学院地方生学员毕业设计报告报告题目:基于VC+的DES算法的实现 学员姓名: 学员队别:四系二十七队 专业名称:网络工程 指导教员: 二一一年四月十二日摘 要本毕业设计研究的是DES加解密算法的实现。DES算法是由IBM公司研制的一种对称加密算法,具有速度快,执行效率高等优点。在POS、ATM、磁卡、智能卡以及信息安全领域得到广泛应用。本文介绍了DES算法的相关背景,阐述了DES算法的基本原理,并在此基础上详细讨论了DES算法的实现方法和流程。同时,采用VC+软件开发平台,结合面向对象方法,通过编程实现了基于DES算法的加解密功能。关键词:DES;保密通信;多线程Ab

2、stractThe graduation project is the study of DES encryption and decryption algorithm. DES algorithm developed by IBM, a symmetric encryption algorithm, has the speed, the implementation efficiency. In the POS, ATM, magnetic cards, smart cards, and is widely used in information security. This article

3、 describes the background of the DES algorithm, described the basic principles of DES algorithm, and on this basis a detailed discussion on the DES algorithm implementation methods and processes. At the same time, using VC + + software development platform, combined with object-oriented method, by p

4、rogramming algorithm based on DES encryption and decryption functions. Keywords: DES; secure communications; multi-threading目 录1 引言11.1 历只背景11.2 国内外现状11.3 课题的意义11.4 本课题的实现方法22 课题基础与理论32.1 开发环境Visual c+32.2 加密体制与DES算法32.2.1算法与加密体32.2.2加密解密的概念加密方法以及应用52.2.3密码学简介82.2.4算法的安全性93 DES算法描述113.1 DES算法框图113.2

5、 DES解密123.3算法流程124 算法实现及应用164.1 应用程序结构164.2加密算法VC+实现164.3 应用程序功能模块定义195 测试21结 论22致 谢23参考文献24基于VC+的DES算法的实现1 引言1.1 历只背景美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点: 1提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;2具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便

6、于理解和掌握;3DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础;4实现经济,运行有效,并且适用于多种完全不同的应用。1977年1月,美国政府颁布:采纳IBM公司设计的方案作为非机密数据的正式数据加密标准(Des Data Encryption Standard)。 1.2 国内外现状Des算法的程序在国内外的使用都很普遍,在很多领域都有应用,不但有软件的实现也有基于硬件的实现,在基于硬件级的实现是为了提高Des的工作效率,提高加解密速度,针对比较高的应用场合而设计。软件实现比较普遍,产品价格适宜。在目前的环境下很多地方都可以找到Des算法实现的源代码。1.3 课

7、题的意义目前在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡持卡人的PIN的加密传输,IC卡与POS间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。另一方面随着Internet日益广泛的应用,黑客行为也是有增无减。木马病毒无处不在,如何有效地抵御各种机密信息不被窃取,一直是信息安全领域的焦点。对消息加密是能达到保密信息不被非法访问和窃取的一种有效手段,而Des算法又是消息加密的一种常用的方法,因此对于算法的实现意义是重大的,同时对于综合运用大学期间各科计算机基础

8、知识是一个非常好的机会。1.4 本课题的实现方法本课题采用Visual C+软件开发工具来实现Des算法,按照Des算法的算法流程建立各功能函数的函数原型,根据各模块的需要调用相应的功能函数,最终达到算法的实现和应用。2 课题基础与理论2.1 开发环境Visual c+VC自诞生以来,一直是Windows环境下最主要的应用开发系统之一,Visual c+不仅是C+语言的集成开发环境,而且与Win32紧密相连,利用Visual c+开发系统可以完成各种各样的应用程序开发,从底层软件到上层直接面向用户的软件,强大的调试功能为大型复杂软件的开发提供了有效的排错手段。进入20世纪90年代以来,随着多媒

9、体技术和图形图像技术的不断发展,可视化技术(Visual)得到广泛重视,越来越多的计算机专业人员和非专业人员都开始研究并应用可视化技术。所谓可视化,一般是指软件开发阶段的可视化和计算机图形技术和方法的应用。可视化编程就是软件开发阶段的可视化。Visual c+是一款很好的可视化开发工具。界面友好,缩短了开发时间,便于程序员操作。开发环境是程序员同VC+的交互界面,通过Visual c+程序员可以直接访问C+源代码编辑器、资源编辑器、使用内部调试器还可以创建项目文件。2.2 加密体制与DES算法2.2.1算法与加密体据记载,公元前400年,古希腊人发明了置换密码。1881年世界上的第一个电话保密

10、专利出现。在第二次世界大战期间,德国军方启用“恩尼格玛”密码机,密码学在战争中起着非常重要的作用。随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高,于是在1997年,美国国家标准局公布实施了“美国数据加密标准(DES)”,民间力量开始全面介入密码学的研究和应用中,采用的加密算法有DES、RSA、SHA等。随着对加密强度需求的不断提高,近期又出现了AES、ECC等。使用密码学可以达到以下目的:保密性:防止用户的标识或数据被读取。数据完整性:防止数据被更改。身份验证:确保数据发自特定的一方。根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(

11、公开密钥加密)。对称钥匙加密系统是加密和解密均采用同一把秘密钥匙,而且通信双方都必须获得这把钥匙,并保持钥匙的秘密。非对称密钥加密系统采用的加密钥匙(公钥)和解密钥匙(私钥)是不同的。对称加密算法用来对敏感数据等信息进行加密,常用的算法包括:DES(Data Encryption Standard):数据加密标准,速度较快,适用于加密大量数据的场合。3DES(Triple DES):是基于DES,对一块数据用三个不同的密钥进行三次加密,强度更高。AES(Advanced Encryption Standard):高级加密标准,是下一代的加密算法标准,速度快,安全级别高。加密算法林林种种,那我们

12、在实际使用的过程中究竟该使用哪一种比较好呢?我们应该根据自己的使用特点来确定,由于非对称加密算法的运行速度比对称加密算法的速度慢很多,当我们需要加密大量的数据时,建议采用对称加密算法,提高加解密速度。对称加密算法不能实现签名,因此签名只能非对称算法。由于对称加密算法的密钥管理是一个复杂的过程,密钥的管理直接决定着他的安全性,因此当数据量很小时,我们可以考虑采用非对称加密算法。在实际的操作过程中,我们通常采用的方式是:采用非对称加密算法管理对称算法的密钥,然后用对称加密算法加密数据,这样我们就集成了两类加密算法的优点,既实现了加密速度快的优点,又实现了安全方便管理密钥的优点。如果在选定了加密算法

13、后,那采用多少位的密钥呢?一般来说,密钥越长,运行的速度就越慢,应该根据的我们实际需要的安全级别来选择,一般来说,RSA建议采用1024位的数字,ECC建议采用160位,AES采用128为即可。随着密码学商业应用的普及,公钥密码学受到前所未有的重视。除传统的密码应用系统外,PKI系统以公钥密码技术为主,提供加密、签名、认证、密钥管理、分配等功能。保密通信:保密通信是密码学产生的动因。使用公私钥密码体制进行保密通信时,信息接收者只有知道对应的密钥才可以解密该信息。数字签名:数字签名技术可以代替传统的手写签名,而且从安全的角度考虑,数字签名具有很好的防伪造功能。在政府机关、军事领域、商业领域有广泛

14、的应用环境。秘密共享:秘密共享技术是指将一个秘密信息利用密码技术分拆成n个称为共享因子的信息,分发给n个成员,只有k(kn)个合法成员的共享因子才可以恢复该秘密信息,其中任何一个或m(mk)个成员合作都不知道该秘密信息。利用秘密共享技术可以控制任何需要多个人共同控制的秘密信息、命令等。认证功能:在公开的信道上进行敏感信息的传输,采用签名技术实现对消息的真实性、完整性进行验证,通过验证公钥证书实现对通信主体的身份验证。密钥管理:密钥是保密系统中更为脆弱而重要的环节,公钥密码体制是解决密钥管理工作的有力工具;利用公钥密码体制进行密钥协商和产生,保密通信双方不需要事先共享秘密信息;利用公钥密码体制进

15、行密钥分发、保护、密钥托管、密钥恢复等。基于公钥密码体制可以实现以上通用功能以外,还可以设计实现以下的系统:安全电子商务系统、电子现金系统、电子选举系统、电子招投标系统、电子彩票系统等。公钥密码体制的产生是密码学由传统的政府、军事等应用领域走向商用、民用的基础,同时互联网、电子商务的发展为密码学的发展开辟了更为广阔的前景。2.2.2加密解密的概念加密方法以及应用随着网络技术的发展,网络安全也就成为当今网络社会的焦点中的焦点,几乎没有人不在谈论网络上的安全问题,病毒、黑客程序、邮件炸弹、远程侦听等这一切都无不让人胆战心惊。病毒、黑客的猖獗使身处今日网络社会的人们感觉到谈网色变,无所适从。但我们必

16、需清楚地认识到,这一切一切的安全问题我们不可一下全部找到解决方案,况且有的是根本无法找到彻底的解决方案,如病毒程序,因为任何反病毒程序都只能在新病毒发现之后才能开发出来,目前还没有哪能一家反病毒软件开发商敢承诺他们的软件能查杀所有已知的和未知的病毒,所以我们不能有等网络安全了再上网的念头,因为或许网络不能有这么一日,就象“矛”与“盾”,网络与病毒、黑客永远是一对共存体。现代的电脑加密技术就是适应了网络安全的需要而应运产生的,它为我们进行一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。其实加密技术也不是什么新生事物,只不过应用在当今电子商务、电脑网络

17、中还是近几年的历史。下面我们就详细介绍一下加密技术的方方面面。加密作为保障数据安全的一种方式,它不是现在才有的,它产生的历史相当久远,它是起源于要追溯于公元前2000年(几个世纪了),虽然它不是现在我们所讲的加密技术(甚至不叫加密),但作为一种加密的概念,确实早在几个世纪前就诞生了。当时埃及人是最先使用特别的象形文字作为信息编码的,随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息。近期加密技术主要应用于军事领域,如美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是German Enigma机,在第二次世界大战中德国人利用它创建了加密信息。此后,由于A

18、lan Turing和Ultra计划以及其他人的努力,终于对德国人的密码进行了破解。当初,计算机的研究就是为了破解德国人的密码,人们并没有想到计算机给今天带来的信息革命。随着计算机的发展,运算能力的增强,过去的密码都变得十分简单了,于是人们又不断地研究出了新的数据加密方式,如利用ROSA算法产生的私钥和公钥就是在这个基础上产生的。数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的

19、过程。当今网络社会选择加密已是我们别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上传输。而且这种不安全性是互联网存在基础TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上大开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子

20、就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取得用户的密码,如果用户是Root用户或Administrator用户,那后果将是极为严重的。还有如果你公司在进行着某个招标项目的投标工作,工作人员通过电子邮件的方式把他们单位的标书发给招标单位,如果此时有另一位竞争对手从网络上窃取到你公司的标书,从中知道你公司投标的标的,那后果将是怎样,相信不用多说聪明的你也明白。这样的例子实在是太多了,解决上述难题的方案就是

21、加密,加密后的口令即使被黑客获得也是不可读的,加密后的标书没有收件人的私钥也就无法解开,标书成为一大堆无任何实际意义的乱码。总之无论是单位还是个人在某种意义上来说加密也成为当今网络社会进行文件或邮件安全传输的时代象征! 数字签名就是基于加密技术的,它的作用就是用来确定用户是否是真实的。应用最多的还是电子邮件,如当用户收到一封电子邮件时,邮件上面标有发信人的姓名和信箱地址,很多人可能会简单地认为发信人就是信上说明的那个人,但实际上伪造一封电子邮件对于一个通常人来说是极为容易的事。在这种情况下,就要用到加密技术基础上的数字签名,用它来确认发信人身份的真实性。类似数字签名技术的还有一种身份认证技术,

22、有些站点提供入站FTP和WWW服务,当然用户通常接触的这类服务是匿名服务,用户的权力要受到限制,但也有的这类服务不是匿名的,如某公司为了信息交流提供用户的合作伙伴非匿名的FTP服务,或开发小组把他们的Web网页上载到用户的WWW服务器上,现在的问题就是,用户如何确定正在访问用户的服务器的人就是用户认为的那个人,身份认证技术就是一个好的解决方案。在这里需要强调一点的就是,文件加密其实不只用于电子邮件或网络上的文件传输,其实也可应用静态的文件保护,如PIP软件就可以对磁盘、硬盘中的文件或文件夹进行加密,以防他人窃取其中的信息。2.2.3密码学简介概念发送者和接收者:假设发送者想发送消息给接收者,且

23、想安全地发送信息:她想确信偷听者不能阅读发送的消息。消息和加密:消息被称为明文。用某种方法伪装消息以隐藏它的内容的过程称为加密,加了密的消息称为密文,而把密文转变为明文的过程称为解密。明文用M(消息)或P(明文)表示,它可能是比特流(文本文件、位图、数字化的语音流或数字化的视频图像)。至于涉及到计算机,P是简单的二进制数据。明文可被传送或存储,无论在哪种情况,M指待加密的消息。密文用C表示,它也是二进制数据,有时和M一样大,有时稍大(通过压缩和加密的结合,C有可能比P小些。然而,单单加密通常达不到这一点)。加密函数E作用于M得到密文C,用数学表示为:E(M)=C.相反地,解密函数D作用于C产生

24、M D(C)=M.先加密后再解密消息,原始的明文将恢复出来,下面的等式必须成立:D(E(M)=M(3) 鉴别、完整性和抗抵赖除了提供机密性外,密码学通常有其它的作用:(1) 鉴别消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。(2) 完整性检验消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。(3) 抗抵赖发送者事后不可能虚假地否认他发送的消息。(4) 算法和密钥密码算法也叫密码,是用于加密和解密的数学函数。(通常情况下,有两个相关的函数:一个用作加密,另一个用作解密)如果算法的保密性是基于保持算法的秘密,这种算法称为受限制的算法。受限制的算法具

25、有历史意义,但按现在的标准,它们的保密性已远远不够。大的或经常变换的用户组织不能使用它们,因为每有一个用户离开这个组织,其它的用户就必须改换另外不同的算法。如果有人无意暴露了这个秘密,所有人都必须改变他们的算法。更糟的是,受限制的密码算法不可能进行质量控制或标准化。每个用户组织必须有他们自己的唯一算法。这样的组织不可能采用流行的硬件或软件产品。但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法。尽管有这些主要缺陷,受限制的算法对低密级的应用来说还是很流行的,用户或者没有认识到或者不在乎他们系统

26、中内在的问题。现代密码学用密钥解决了这个问题,密钥用K表示。K可以是很多数值里的任意值。密钥K的可能值的范围叫做密钥空间。加密和解密运算都使用这个密钥(即运算都依赖于密钥,并用K作为下标表示),这样,加/解密函数现在变成:EK(M)=CDK(C)=M.这些函数具有下面的特性:DK(EK(M)=M.有些算法使用不同的加密密钥和解密密钥,也就是说加密密钥K1与相应的解密密钥K2不同,在这种情况下:EK1(M)=C DK2(C)=MDK2 (EK1(M)=M所有这些算法的安全性都基于密钥的安全性;而不是基于算法的细节的安全性。这就意味着算法可以公开,也可以被分析,可以大量生产使用算法的产品,即使偷听

27、者知道你的算法也没有关系;如果他不知道你使用的具体密钥,他就不可能阅读你的消息。密码系统由算法、以及所有可能的明文、密文和密钥组成的。2.2.4算法的安全性一个密码系统的安全性只在于密钥的保密性,而不在算法的保密性。对纯数据的加密的确是这样。对于你不愿意让他看到这些数据(数据的明文)的人,用可靠的加密算法,只要破解者不知道被加密数据的密码,他就不可解读这些数据。但是,软件的加密不同于数据的加密,它只能是“隐藏”。不管你愿意不愿意让他(合法用户,或 Cracker)看见这些数据(软件的明文),软件最终总要在机器上运行,对机器,它就必须是明文。既然机器可以“看见”这些明文,那么 Cracker,通

28、过一些技术,也可以看到这些明文。于是,从理论上,任何软件加密技术都可以破解。只是破解的难度不同而已。有的要让最高明的 Cracker 忙上几个月,有的可能不费吹灰之力,就被破解了。所以,反盗版的任务(技术上的反盗版,而非行政上的反盗版)就是增加 Cracker 的破解难度。让他们花费在破解软件上的成本,比他破解这个软件的获利还要高。这样 Cracker 的破解变得毫无意义谁会花比正版软件更多的钱去买盗版软件 ?在DES中,初始置换IP和逆初始置换IP-1各使用一次,使用这两个置换的目的是为了把数据彻底的打乱重新排列,他们对数据加密所起的作用不大,因为他们与密匙无关,置换关系固定,所以一旦公开,

29、他们对数据加密便无多大价值。在DES中除了S盒是非线性变换外,其余变化均是线性变换,因此S盒是DES算法的关键,可以看出,任意改变S盒中输入的几位,其输出至少有两位发生变化,由于DES中使用了16次迭代,所以即使改变明文或密匙的一位,密文中大约有32位发生变化。S盒的设计一直没有完全公开,人们怀疑S盒的设计可能隐藏着某种陷门,它可以使了解陷门的人能够成功的进行密码分析。经过多年来的研究,人们的确发现了S盒的很多规律,但至今还没有发现S盒的致命缺陷。3 DES算法描述3.1 DES算法框图DES对64(bit)位的明文分组M进行操作,M经过一个初始置换IP置换成m0,将m0明文分成左半部分和右半

30、部分m0=(L0,R0),各32位长。然后进行16轮完全相同的运算,这些运算被称为函数f,在运算过程中数据与密匙结合。经过16轮后,左,右半部分合在一起经过一个末置换。在每一轮中,密匙位移位,然后再从密匙的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,在将其置换换一次。这四步运算构成了函数f。然后,通过另一个异或运算,函数f的输出与左半部分结合,其结果成为新的右半部分,原来的右半部分成为新的左半部分。将该操作重复16次,就实现了。具体如图2-1所示:图2-1 DES算法框图3.2 DES解密加密和解密使用相同的算法。DES加密和解密唯

31、一的不同是密匙的次序相反。如果各轮加密密匙分别是K1,K2,K3.K16那么解密密匙就是K16,K15,K14K1。3.3算法流程 DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,整个算法的主流程图如下:其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其置换规则见下表:58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17, 9,1,59,51,43,35,2

32、7,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,即将输入的第58位换到第一位,第50位换到第2位,.,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0 是右32位,例:设置换前的输入值为D1D2D3.D64,则经过初始置换后的结果为:L0=D58D50.D8;R0=D57D49.D7。经过26次迭代运算后。得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规

33、则如下表所示:40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25,放大换位表:32, 1 , 2 , 3 , 4 , 5 , 4 , 5 , 6 , 7 , 8 , 9 , 8 , 9 , 10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21

34、,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1,单纯换位表:16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10,2, 8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25,在f(Ri,Ki)算法描述图中,S1,S2.S8为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,2.8)的功能表:选择函数SiS1: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,

35、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,S2:15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,3,13,4,7,15,2,8,14,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,S3:10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,13,7,0,9,3,4,6

36、,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,S4: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,S5:2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,14,1

37、1,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,13,6,15,0,9,10,4,5,3,S6: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,6,0,8,13,S7:4,11,2,14,15,0,8,13,3,12,9,7,5,1

38、0,6,1,13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,S8:13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,在此以S1为例说明其功能,我们可以看到:在S1中,

39、共有4行数据,命名为0,1、2、3行;每行有16列,命名为0、1、2、3,.,14、15列。现设输入为: DD1D2D3D4D5D6令:列D2D3D4D5行D1D6然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出。下面给出子密钥Ki(48bit)的生成算法。从子密钥Ki的生成算法描述图中我们可以看到:初始Key值为64位,但DES算法规定,其中第8、16、.64位是奇偶校验位,不参与DES运算。故Key 实际可用位数便只有56位。即:经过缩小选择换位表1的变换后,Key 的位数由64 位变成了56位,此56位分为C0、D0两部分,各28位,然后分别进行第1次循环左移,得到

40、C1、D1,将C1(28位)、D1(28位)合并得到56位,再经过缩小选择换位2,从而便得到了密钥K0(48位)。依此类推,便可得到K1、K2、.、K15,不过需要注意的是,16次循环左移对应的左移位数要依据下述规则进行:循环左移位数1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、.,最后一次用K0,算法本身并没有任何变化。4 算法实现及应用4.1 应用程序结构程序总体功能有加密演示,解密演示,加密过程三个部分,同时提供对密匙的简单管理,用户可根据需要自行修改密匙设

41、置。程序上各个功能模块的执行依赖于界面事件,程序采用Visual C+实现,充分利用了Visual C+的事件模型.事件驱动的原理是注册监视器,为对象添加监视器,捕获事件,分析事件原因以及类型,根据事件的不同,执行不同的功能代码.本程序根据用户执行的操作,程序捕获界面上发生的事件,再根据事件的类型,执行不同的功能函数。4.2加密算法VC+实现通过前面章节对DES算法的介绍,用VC+开发设计DES加密算法,其主要实现代码如下:for(i=1;i=64;i+) m1i=mipi-1;/64位明文串输入,经过IP置换。下面进行迭代。由于各次迭代的方法相同只是输入输出不同,因此只给出其中一次。以第八次

42、为例:/进行第八次迭代。首先进行S盒的运算,输入32位比特串。for(i=1;i=48;i+)/经过E变换扩充,由32位变为48位 RE1i=R7Ei-1;for(i=1;i=48;i+)/与K8按位作不进位加法运算 RE1i=RE1i+K8i;for(i=1;i=48;i+) if(RE1i=2) RE1i=0; for(i=1;i7;i+)/48位分成8组s11i=RE1i;s21i=RE1i+6;s31i=RE1i+12;s41i=RE1i+18;s51i=RE1i+24;s61i=RE1i+30;s71i=RE1i+36;s81i=RE1i+42;/下面经过S盒,得到8个数。S1,s2

43、,s3,s4,s5,s6,s7,s8分别为S表s1=s1s116+s111*2s115+s114*2+s113*4+s112*8;s2=s2s216+s211*2s215+s214*2+s213*4+s212*8;s3=s3s316+s311*2s315+s314*2+s313*4+s312*8;s4=s4s416+s411*2s415+s414*2+s413*4+s412*8;s5=s5s516+s511*2s515+s514*2+s513*4+s512*8;s6=s6s616+s611*2s615+s614*2+s613*4+s612*8;s7=s7s716+s711*2s715+s714

44、*2+s713*4+s712*8;s8=s8s816+s811*2s815+s814*2+s813*4+s812*8;for(i=0;i8;i+)/8个数变换输出二进制for(j=1;j5;j+) tempj=si+1%2; si+1=si+1/2;for(j=1;j5;j+) f4*i+j=temp5-j;for(i=1;i33;i+)/经过P变换 frki=fPi-1;/S盒运算完成for(i=1;i33;i+)/左右交换 L8i=R7i;for(i=1;i33;i+)/R8为L7与f(R,K)进行不进位二进制加法运算结果 R8i=L7i+frki;if(R8i=2) R8i=0; 生成子

45、密钥的VC程序源代码如下: for(i=1;i57;i+)/输入64位K,经过PC-1变为56位 k0i=kPC_1i-1;56位的K0,均分为28位的C0,D0。C0,D0生成K1和C1,D1。以下几次迭代方法相同,仅以生成K8为例。 for(i=1;i27;i+)/循环左移两位 C8i=C7i+2; D8i=D7i+2;C827=C71;D827=D71;C828=C72;D828=D72;for(i=1;i=28;i+) Ci=C8i; Ci+28=D8i;for(i=1;i=48;i+) K8i=CPC_2i-1;/生成子密钥k84.3 应用程序功能模块定义本应用程序为DES算法加解密演示程序,主要功能是提供一个加解密演示的效果,在输入框中输入明文和密钥,点击加密便可进行加密,并在右侧窗口显示加密的全过程,提供明文与密文的二进制显示。为体现DES算法的可逆性,可对密文进行解密,点击窗体上的解密便可完成密文的解密,DES加密算法演示程序界面如图3-1所示:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号