毕业设计(论文)-基于C++的DES算法实现.doc_第1页
毕业设计(论文)-基于C++的DES算法实现.doc_第2页
毕业设计(论文)-基于C++的DES算法实现.doc_第3页
毕业设计(论文)-基于C++的DES算法实现.doc_第4页
毕业设计(论文)-基于C++的DES算法实现.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

xxxx 大学 xx 学院本科毕业论文 河南农业大学河南农业大学 本科生毕业论文 题 目 基于 C+的 DES 算法实现 学 院 专业班级 学生姓名 指导教师 撰写日期: 年 月 日 xxxx 大学 xx 学院本科毕业论文 基于基于 C+的的 DES 算法实现算法实现 摘要摘要 随着科技的发展,人们在享受信息资源所带来的巨大的方便的同时,信息安全也面临着的巨 大考验,信息技术的迅猛发展使得网络环境变得日益复杂。因此,数据加密便成为了当前我们面 临的一大问题,其目的是使信息通过互联网传输时,即使被窃取或截获,也让对方不能了解其真 正的含义,对于非法使用者来说,相当于一段乱码。通过这次研究发现了 DES 算法是当下使用比 较广泛的加密算法,也是最有代表性的分组加密算法,虽然 DES 加密算法在一些技术面前有被破 解的风险,但凭借其自身的优点,相关产品仍然占据市场的主导地位,目前较为广泛的应用于通 信加密之中。本文首先研究了 DES 算法的基本原理,并且分析了 DES 算法的优缺点,通过查资料编 写了 C+的源代码。并且在后续的研究实验中,在所编写的程序上计算得出了加密后的数据。 关键词:关键词:DES 加密算法;数据安全加密算法;数据安全 xxxx 大学 xx 学院本科毕业论文 The realization of RSA algorithm based on C+ WANG Tao Abstract With the development of science and technology, people in the enjoyment of information resources to bring great convenience at the same time, information security also faces a huge challenge, the rapid development of information technology makes the network environment has become more and more complex. Therefore, data encryption has become a big problem we are facing. The purpose is to make the information through the Internet transmission, even if the theft or intercepted, also let your opponent cannot understand the true meaning of, for illegal users, which is equivalent to a garbled. Firstly, .Through the study found that the DES algorithm is today widely encryption algorithm, is also the most representative block encryption algorithm, although the DES encryption algorithm in front of some technology has being cracked, but with its own advantages, related products market still occupy a dominant position, now is widely used in communication encryption.this paper studies the basic principle of the DES algorithm, and analyses the advantages and disadvantages of DES algorithm, search through the information written in C + + source code. And in the experimental study of follow-up, in the program using the encrypted data DES: Encryption algorithm ;Data security xxxx 大学 xx 学院本科毕业论文 I 目录 1 绪论绪论.1 1.1 研究背景及目的.1 1.2 实现方法和意义.2 2 DES 加密算法的描述加密算法的描述 .3 2.1 DES 算法的来历 .3 2.2 加密算法.3 2.2.1 对称加密算法.3 2.2.2 非对称加密算法.4 2.2.3 加密算法优缺点分析及选择.4 3 C+语言语言.5 3.1 C+语言简述.5 3.1.1 C+语言由来.5 3.1.2 C+语言的发展历史.5 3.2 C+语言的优缺点.6 4 DES 加密算法的实现加密算法的实现 .7 4.1 DES 加密算法实现的步骤 .7 4.2 每个循环的详细过程.8 5 DES 算法软件实现的详细设计算法软件实现的详细设计 .12 5.1 编写头文件.12 5.2 源代码的编写:.14 6 测试测试.23 6.1 测试平台和方法.23 6.2 正确性测试.23 7 结论结论.26 参考文献参考文献.27 致谢致谢.28 xxxx 大学 xx 学院本科毕业论文 1 1 绪论绪论 1.1 研究背景及目的研究背景及目的 随着 21 世纪的到来,人类已经完全进入了信息时代,目前信息已经成为最为重要的资源,同时信 息的保密问题就越来越重要了。基于目前的网络状况,迫切地需要保证信息传输的安全以及保证信 息本身的安全。随着网络通信越发频繁,为了保证数据在网上传输时的安全,对数据进行加密进而 保护就变得非常有必要,才能保证数据传输的安全。用基于高等数学的某些方法的程序和密钥对信 息进行加密.把私人的数据变成一堆看似毫无关联难以理解的一段信息,使只有合法的接受者才知 道恢复数据的方式。而对于非法使用者和窃取者,即使了密文,也不能通过得到的数据恢复原始数 据,这就是数据加密。我们可以通过一个比较简单例子来简要说明数据加密的基本过程。 例如,将 数字 0,l,2,3,4,8,9 的自然顺序保持不变,但使之与 2,3,4,5,0,1 分别对应,那 么明文“1018”对应的密文就是“3230”,对于不知道密钥的人来说,“3230”就是一串没有任何 意义的数据,这种加密方式称为替换加密,属于对称加密的一种,此时的密钥为 2。加密技术发展 到今天,主要分为对称加密和非对称加密。其中, 对称加密是指使用同样的密钥对数据进行加密和解 密。本文讨论的 DES 算法就是对称加密的一种加密技术,而且也是最重要的一种加密技术之一。 DES 对称密钥分组密码的一个典型代表,并且最终被美国国家标准局批准把它作为非机要部门使用 的数据加密标准简称 DES,DES 是 Data Encryption Standard 的缩写。自从 DES 算法公布以来, 一直被广泛地用于国际上商用保密通信和计算机通信。但是在现在 DES 算法比较少的运用在实际 生活中,原因是 DES 加密由于密钥比较简单和新的破译方法不断出现。更多的情况下是采用增加 密钥长度和多重 DES 加密的办法。 目前来说,DES 算法还是具有极高安全性的,除了用穷举搜索法对 DES 算法进行攻击外,暂时 还没有发现更有效的办法。穷举空间长为 256 的 56BIT 密钥,想通过穷举法获得解密密钥,是非常 难以实现的,原因是假如使用一台速度是每一秒种检测二百万个密钥的计算机,则它搜索完全部密 钥就需要将近 1100 年的时间。由此可见,破译者要,但是,随着现代科学技术的不断发展,计算 机的运算速度变得越来越快,超高速的计算机的出现将不会遥远,这样为了达到更高的保密程度, 我们可考虑把 DES 密钥的长度继续增长。C+作为目前较为常用的变编程语言,其地位在计算机语 言中也是很高,本文主要研究 DES 算法基于 C+的实现。 DES( Data Encryption Standard)算法的输入数据为 64 位,但其实际可用密钥却是 56 位。虽然随 着科学技术的进步,最基本的 DES 加密算法已经不再像过去那样很安全,但是学习对于过去有着 很重要地位,被广泛应用的 DES 算法,也是百利而无一害的,尤其是 DES 算法现在还在某些领域 发挥着余热。 随着信息技术的快速发展,信息加密技术也伴随着信息技术快速发展。信息加密技术被广泛地 应用到信息安全的各个领域,其成为了网络数据保护的最实用和最安全的方法。信息加密技术是一 门涉及通信学、计算机科学、高等数学等学科的交叉学科。随着现代密码学的快速发展, 改进加密 xxxx 大学 xx 学院本科毕业论文 2 算法更多的是通过在统计学意义上来增加破译的难度,提高破译成本来提高加密算法的安全性,而 已经不再像过去一样单纯的依赖于对加密算法本身的保密。 1.2 实现方法和意义实现方法和意义 由于在目前要求速度的网络上实现非常高的传输速率,在当前如此众多加密算法中,由于对称 密钥算法具有加密速度要比其他加密方式快的多的有点,选择对称密钥算法进行加密无疑是比较合 适的。RSA 加密算法由于密钥长度很长的缺点,导致它在当今很少被广泛的使用。另外 RSA 在软 件上的实现时间上也远远不及 DES。所以在高速度的今天,抗住了近 20 年多年的密码分析 DES 算 法在国内外的还是很具有应用价值的。DES 算法是一个比较优秀的加密算法。 本篇论文的主要工作包括(1)对 DES 算法的加密算法的实现过程进行研究理解(2)设计完 成基于 VC 软件的 DES 算法实现(3)用 C+编程语言完成 DES 算法模块的编程工作。(4)完成 编制测试代码,在具体的平台上进行测试该实现的正确性,给出测试结果。 xxxx 大学 xx 学院本科毕业论文 3 2 DES 加密算法的描述加密算法的描述 2.1 DES 算法的来历算法的来历 DES 最早产生于 20 世纪 70 年代初期,是 IBM 公司在 20 世纪 60 年代末设计了一个计算机密 码编码学方面的研究项目的最终成果,当时 IBM 把这个算法卖给了伦敦的劳埃德保险公司。在 1973 年时 IBM 就提交了 DES 算法给美国标准局 NBS(National Bureau of Standards)作为征求国家 密码标准方案的预案。这是当时提出的最好的方法。因而在 1977 年被选为数据加密标准。这就是 著名的 DES 加密算法。 2.2 加密算法加密算法 加解密技术包含了加密技术和解密技术两个方面。他们是当前信息安全保密的重要手段。通过 把可理解的明文转化为看似无意义的混乱文字信息,在接收者收到后,采用解密技术将其转换为原 来的文字,达到信息保密的目的。算法和密钥是加解密技术的两个最重要的组成部分。算法表示通 过何种方式将原来的可以理解的文字与某一串特定文字(密钥)相结合。而密钥就是算法所使用的, 用于加密或者解密的一串字符。加解密技术是一个非常引人入胜的研究领域,作为网络安全领域的 基础之一,其自身的进步,推动着各种计算机技术前进,例如密码学,计算机操作系统,程序设计 语言等等。然而,由于其自身的特点以及其他方面的原因,当前对加解密技术的研究还没有达到应 有的高度,但是我们相信,在不久的将来,这一领域将会蓬勃发展,取得越来越多的创新成果。 2.2.1 对称加密算法对称加密算法 在众多加密算法中,对称加密是比较成熟的一种。在这种算法中,数据发送方把密钥和明文用 算法处理后,生成复杂的密文并发出,收信方使用相同的密钥和算法的逆算法对密文解密这样就可 以生成明文,这就要求解密方在这之前得了解加密密钥是什么。对称加密算法的算法是不保密的, 而且效率很高速度很快计算量不大。但因为交易双方使用的是同一把密钥,使得算法的安全性无法 得到保证。除此以外,用户需要使用别人不知道的一把密钥进行对称加密,这就会使得双方持有的 密钥数量极度增长,密钥管理就成了严重问题。对称加密算法可以加密和认证但不能进行签名,与 不保密的密钥加密算法比起来它的应用范围变小了。所以 DES 和 IDEA 在网络安全中得到了大量 使用。 AES(AdvancedEncryptionStandard)是一种高级加密标准。AES 共有三个密钥长度,分别为 128、192、265 位,与 DES 加密算法仅有的 64 位密钥相比,其 128 位密钥要高出 1021 倍。 IDEA(International Data Encryption Algorithm)国际数据加密算法是一种对称分组密码。它由 瑞士联邦理工学院所提出。其使用一个 128 位的密钥对 64 位报文块进行加密操作。但 IDEA 算法 己经申请了专利,在不被批准的条件下不可使用,同时不得在公共场合使用。 xxxx 大学 xx 学院本科毕业论文 4 2.2.2 非对称加密算法非对称加密算法 非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:私有密钥和公开密钥。 私有密钥与公开密钥是一对。若用私有密钥对数据实施加密,必须用对应的公开密钥方能解密。若 用公开密钥对数据实施加密,必须用对应的私有密钥方能解密。因为加解密过程中应用了两个不同 的密钥,由此得名非对称加密算法。一方生成一对密钥然后将公开其中一把密钥,另一方使用公用 密钥对信息进行加密后再发送给回去,一方用另一把密钥对密文进行解密。 因为非对称加密必须有两个密钥配合使用才能完成加解密过程,所以有利于数据的安全性有较 高的保障系数。然而,非对称加密技术的加密速度和解密速度都很慢,如此一来,相比于对称加密 技术,非对称加密技术在加解密数据条件相同时所花费的时间更长。所以,对于大量文件进行加密, 通常不选择非对称加密算法,它一般只适用于加密内容较少的数据。考虑到非对称加密算法和对称 加密算法各有利弊.故在对实际数据加密时,往往将这两种加密算法结合使用。 2.2.3 加密算法优缺点分析及选择加密算法优缺点分析及选择 以对称加密算法和非对称加密算法的典型代表 DES 及 RSA 进行优缺点的比较: DES 优缺点分析: (1)具有良好的扩散特性:一个密文分组可依赖于全部分组明文字母。这种特性在很多安全服务 中得到应用,例如数据完整性等。 (2) DES 对插入和修改具有免疫性:由于信息是按分组进行加密的,因此如果在一个分组插入一 个符号,这样就会因为分组长度发生变化而被检测出来。 另外,一个明文字符不可能产生密文字符,同时由于其扩散性能,被改变的信息内容、时间、 日期、名字也都能很快地被检测出来。 (3) DES 加密速度慢:分组必须从加密过程开始直到接收整个明文分组后才能进行。同时,为了 做到混乱和扩散,要进行多次迭代,从而使得分组加密的速度降低。 RSA 优缺点分析: (1)加密速度低:由于两个大素数 P 和 q 的乘积 N 的位数不断增加,因此其速度将不断下降,最 快也比 DES 慢 1000 倍。 (2)简化密钥管理:由于加密密钥可以公开,因此可以极大地减少密钥管理的难度,可以提供比 传统密码体制更多的安全服务,也可以使用更有效的算法难度大的密码算法。综合比较两种加密方 式,两者虽然加密速度都不是特别快,但是相比之下 DES 仍比 RSA 要快许多,同时本系统的设计 仍有其他模块从多个角度提高加密性,故综合安全性及加密速度因素,选择使用 DES 加密算法对 后续系统进行设计与实现。 xxxx 大学 xx 学院本科毕业论文 5 3 C+语言语言 3.1 C+语言简述语言简述 3.1.1 C+语言由来语言由来 C+这个名字是 Rick Mascitti 于 1983 年中所建议的,并于 1983 年 12 月首次使用。更早以前, 尚在研究阶段的发展中语言曾被称为“new C”,之后是“C with Class”3 。在计算机科学中,C+仍 被称为 C 语言的上层结构。它最后得名于 C 语言中的“+”操作符(其对变量的值进行递增)。而 且在共同的命名约定中,使用“+”以表示增强的程序。Stroustrup 说:“这个名字象征着源自于 C 语 言变化的自然演进”。 C 语言是 C+的基础,C+和 C 语言在很多方面是兼容的。 C 语言是一个结构化语言,它的重点在于算法与数据结构。C 程序的设计首要考虑的是如何通 过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。C+, 首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获 取对象的状态信息得到输出或实现过程(事物)控制。所以 C 语言和 C+的最大区别在于它们解 决问题的思想方法不一样。 3.1.2 C+语言的发展历史语言的发展历史 在“C with Class”阶段,研制者在 C 语言的基础上加进去的特征主要有:类及派生类、共有和私 有成员的区分、类的构造函数和析构函数、友元、内联函数、赋值运算符的重载等。 1985 年公布的 C+语言 1.0 版的内容中又添加了一些重要特征:虚函数的概念、函数和运算符 的重载、引用、常量(constant)等。 1989 年推出的 2.0 版形成了更加完善的支持面向对象程序设计的 C+语言,新增加的内容包括: 类的保护成员、多重继承、对象的初始化与赋值的递归机制、抽象类、静态成员函数、const 成员 函数等。 1993 年的 C+语言 3.0 版本是 C+语言的进一步完善,其中最重要的新特征是模板 (template),此外解决了多重继承产生的二义性问题和相应的构造函数与析构函数的处理等。 1998 年 C+标准(ISO/IEC14882 Standard for the C+ Programming Language)得到了国际标准 化组织(ISO)和美国标准化协会(ANSI)的批准,标准 C+语言及其标准库更体现了 C+语言设 计的初衷。名字空间的概念、标准模板库(STL)中增加的标准容器类、通用算法类和字符串类型 等使得 C+语言更为实用。此后 C+是具有国际标准的编程语言,该标准通常简称 ANSI C+或 ISO C+ 98 标准,以后每 5 年视实际需要更新一次标准。 后来又在 2003 年通过了 C+标准第二版(ISO/IEC 14882:2003):这个新版本是一次技术性修 订,对第一版进行了整理修订错误、减少多义性等,但没有改变语言特性。这个版本常被称为 C+03。此后,新的标准草案叫做 C+ 0 x。对于 C+ 0 x 标准草案的最终国际投票已于 2011 年 8 月 10 日结束,并且所有国家都投出了赞成票,C+0 x 已经毫无疑义地成为正式国际标准。先前被 xxxx 大学 xx 学院本科毕业论文 6 临时命名为 C+0 x 的新标准正式定名为 ISO/IEC 14882:2011,简称 ISO C+ 11 标准。C+ 11 标准 将取代现行的 C+标准 C+98 和 C+03。国际标准化组织于 2011 年 9 月 1 日出版发布ISO/IEC 14882:2011,名称是:Information technology - Programming languages - C+ Edition: 3。 3.2 C+语言的优缺点语言的优缺点 优点 总得来说,C+语言的主要特点表现在两个方面,一是尽量兼容 C,二是支持面向对象的方法。 它操持了 C 的简洁、高效的接近汇编语言等特点,对 C 的类型系统进行了改革的扩充,因此 C+ 比 C 更安全,C+的编译系统能检查出更多的类型错误。另外,由于 C 语言的广泛使用,因而极大 的促进了 C+的普及和推广。 C+语言最有意义的方面是支持面向对象的特征。虽然与 C 的兼容使得 C+具有双重特点,但 他在概念上完全与 C 不同,更具面向对象的特征。 出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如 STL)或其他的 形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup 的C+语言的设计 和演化(1994)里做了详尽的陈述。 C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的 程序框架包括 Boost、Qt、MFC、OWL、wxWidgets、WTL 就是使用的 C+。 缺点: C+由于语言本身复杂。C+的编译系统受到 C+的复杂性的影响,非常难于编写,即使能够 使用的编译器如果存在问题,可能难于被发现。 由于本身的复杂性,复杂的 C+程序的正确性相当难于保证。 xxxx 大学 xx 学院本科毕业论文 7 4 DES 加密算法的实现加密算法的实现 4.1 DES 加密算法实现的步骤加密算法实现的步骤 DES 加密处理主要分为三个步骤,第一步,进行初始变换。主要是针对 64 位的明文按照初始 置换表来进行初始换位。在初始换位的整体过程中,为了保证输入的数据准确无误,还应该保持转 换中的数据与换位表中的数据的过程也要视转换的情况而定。最后一个步骤是按初始置换表的顺序 换位,当明文通过 16 轮加密过程完整结果后,接着将根据初始换位表的顺序将 L16 和 R16 合 为一个 64BIT 的数据,得到的数据密文,就是通过 DES 算法进行加密后得到的 图 3.1 演示了 DES 的总体方案,由图可知,64bit 明文和 56bit 密钥是 DES 算法的两个输入。 图图 4.1 DES 加密过程加密过程 通过上图的左边我们可以了解,我们输入的明文经过以下几个阶段的处理。首先,所输入的明 文要进行初始置换,从而产生新的输入。接下来的阶段是由同一项操作进行 16 次循环组成的,从图 中我们可以看出这个函数包含了两种函数:替代函数和置换函数。DES 算法产生的最终输出是 64bit,它最后一个循环产生的输出的左半部分和右半部分交换组成的,这是产生的输入并不是我们 需要的最终输出,将得到的输出经过一个逆初始置的过程就得到了我们需要的最终输出(所谓的逆 初始置换就是初始置换的逆置换)。 图 4.2 的右半部分演示了 56bit 密钥是如何加密的. 对 DES 加密算法来说,虽然表面上看来密钥 是 64 位的,但是只有 56 位是有意义的, 有 8 位在算法中被丢弃,分别是 8、16、24 xxxx 大学 xx 学院本科毕业论文 8 、32、40、48、56、64 位,这些位大多在奇偶校验中使用。给出的密钥首先要进行一次置换,密钥 在 16 个循环中每环都要通过左移操作和置换操作,这样就生成了每一环的子密钥。每轮的子密钥 是不相同的,原因是每一个循环内使用相同置换函数,但密钥比特重复移位。 表表 4.1 初始置换表初始置换表 58, 50, 42, 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, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7 表表 4.2 逆初始置换表逆初始置换表 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 表表 4.3 拓展置换表拓展置换表 32 4 8 12 16 20 24 28 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 5 9 13 17 21 25 29 1 4.2 每个循环的详细过程每个循环的详细过程 图 4.2 展示了每一个循环的具体实现的过程。由图 4.2 我们可以发现每个 64bit 的中间结果被拆 分开来,对于每一个循环都把他们当作两个独立的 32bit 数值处理,在这里我们称他们为 L(左)和 R(右)。每一个循环的实现过程都可以用下列公式表示出来: Li=Ri-1(4.1) Ri=Li-1F(Ri-1, Ki)(4.2) 每个循环过程使用的密钥 Ki 的长度是 48bit。而输入的 R 的长度是 32bit。R 确定后,会通过一 个拓展置换操变为 48 位的数据,作由表 4.3 进行。所得到的 48bit 再和 Ki 进行异或。之后再通过 S 盒生成了 32 位的输出。 xxxx 大学 xx 学院本科毕业论文 9 图图 4.2 DES 加密过程加密过程 S 盒在函数中是由 8 个 S 子盒组成的,每一 S 子盒的输入都为 6 比特,而产生输出为 4 比特。 这些变换是由表 4.2 定义的,这个表的工作原理是:盒子 Si 的输入的第一位和第六位放在一起,可以 看作一个二进制的数字,这个二进制数相当于一个纵坐标,可以从 S 盒中选出某一行,而第二第三 第四第五位放在一起,也可以看作一个二进制数字,相当于一个横坐标选出需要的一列.当上述的 坐标选出后,我们可以找到 S 盒中的数据,然后将十进制数字转换为二进制数字,这就是最终产生 的 4bit 的输出。 S 盒 1 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, 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, S 盒 2 xxxx 大学 xx 学院本科毕业论文 10 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, S 盒 3 10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8, 13, 7, 0, 9, 3, 4, 6, 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, S 盒 4 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, S 盒 5 2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9, 14, 11, 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, S 盒 6 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, S 盒 7 4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 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, S 盒 8 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 4.3 密钥的产生密钥的产生 在 DES 算法中,由一个初始秘钥将生成 16 个子秘钥,供每轮加密使用。我们观察图 4.3,在 图中可以输入的密钥长度为 56bit,这是因为我们去掉了 8 位不用,当作奇偶校验位。而 DES 算法 xxxx 大学 xx 学院本科毕业论文 11 所需要的密钥并不是输入的密钥,输入的密钥首先要经过一个置换,这个置换由表 2.3(a)确定, 经过置换后 56bit 的密钥被当成两个 28bit 的量 C0 和 D0。在每一环中,被分开的两部分密钥都将 经过由压缩置换表确定的左移位数的循环左移,这些经过移位所产生的新的输出在作为下一个循环 的新的输入同时也作为置换选择 2 的表 2.3(b)的输入,新产生的输出即是函数 f(Ri-1,K)的输入。 要注意的是,密钥置换 A 的输入为 64 位,输出为 56 位;而密钥置换 B 的输入和输出分别为 56 位 和 48 位。 图图 4.3 子密钥的生成过程子密钥的生成过程 表表 4.4 压缩置换表压缩置换表 14, 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, 32 表表 4.5 每轮移动的位数每轮移动的位数 循环序号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 转动比特数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1 xxxx 大学 xx 学院本科毕业论文 12 5 DES 算法软件实现的详细设计算法软件实现的详细设计 5.1 编写头文件编写头文件 在 C 语言家族程序中,头文件被大量使用。一般而言,每个 C+/C 程序通常由头文件(header files)和定义文件(definition files)组成。头文件作为一种包含功能函数、数据接口声明的载体文件, 主要用于保存程序的声明(declaration),而定义文件用于保存程序的实现(implementation)。我们为了 后期的方便,先编写头文件,将所用的数据编入其中,比如压缩置换表,逆置换表,8 个 S 盒等 #include DWORDLONG dwlKey_PC_164= 57,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,4,0; DWORDLONG dwlKey_PC_264= 14,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,32,0; DWORDLONG dwlData_IP65= 58,50,42,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,27,19,11,3, 61,53,45,37,29,21,13,5, xxxx 大学 xx 学院本科毕业论文 13 63,55,47,39,31,23,15,7,0; DWORDLONG dwlData_Expansion64= 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, 20,21,22,23,24,25, 24,25,26,27,28,29, 28,29,30,31,32,1,0; DWORDLONG dwlData_P33= 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,0; DWORDLONG dwlData_FP65= 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,

温馨提示

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

评论

0/150

提交评论