1、本科毕业论文(20 届)DES 加密算法的研究及 C#软件实现所在学院 专业班级 通信工程 学生姓名 学号 指导教师 职称 完成日期 年 月 I摘 要移动通信是现代人生活中不可或缺的一部分,而在通信时信息的安全问题也越来越受到人们的关注。直接发送的明文信息很容易被非法用户窃取,因此在通信前使用加密算法对信息进行加密是非常必要的。虽然现代加密体制中有许多加密算法已经具备了很高的安全性。但是它们算法强度较高,系统开销较大,并不适合在简单的点对点通信中使用。在这种背景下,容易实现、实现速度快、双方共享密钥的对称加密算法就成了更好的选择。本文针对对称加密算法中的典型算法 DES 算法进行了研究,并期望
2、将其应用到类似微信这种即时通信软件中。本文首先对加密算法的历史和应用进行了简单的介绍,然后详细介绍了编程平台 Visual Studio 和编程语言 C#语言,并对其功能和特点进行了分析。之后详细的描述了密码学的发展历程及基本理论,并对著名的 DES 算法进行了详细的介绍和分析。最后使用 C#语言对 DES 加密算法进行了编程实现,接着重点对其安全性进行了评价和分析。并根据该加密算法的缺陷提出了提高其安全性的策略和改进构想。通过阅读本文,读者可以对密码学及加密算法有一个初步的了解,并可以结合实际情况将本文提供的源代码运用在实际的即时通信软件的信息加密中,保障信息的传输安全,同时保护个人隐私。本
3、文的算法具有相当高的保密性和不可破解性。关键词:密码学;加密算法;安全性分析;C# 语言IIAbstractMobile communication is an essential part in our daily life, while information security has become one of the most concerned topics. Sending messages in plaintext is easy to be stolen by illegal users. So it is of great significant using encrypti
4、on algorithms to encrypt messages before communication. Although many modern encryption algorithms possess high security, their application of program code is long, slow and with high cost. Therefore they are not suitable for p-t-p communication. In this context, the encryption algorithms which are
5、in high operating speed, low cost and using shared key are much better alternative. This article does some research work on symmetric key cryptography especially on DES encryption algorithm in the hope that this might be applied in instant messaging software e.g. WeChat.To begin with, the paper intr
6、oduces the history and applications of the encryption algorithms, then introduces Visual Studio and C sharp language in detail and makes analysis on their characteristics. In addition, a detailed description has been made on the development of cryptology and its basic theory. Furthermore this paper
7、has introduced the famous encryption algorithm-DES. Finally, the DES encryption algorithm has been programmed by C sharp language, then this paper make an evaluation on its security level and application methods have been put forward to the algorithm in order to raise its security level.Reader will
8、not only find this paper a basic understanding of cryptography and encryption algorithm, but also encrypt plaintext through selective source code of encryption algorithm as it may need. In doing so the attackers are unable to decrypt messages, meanwhile the users privacy can be protected. The algori
9、thm presented in this article is confidentiality and unbreakable.Keywords: cipher, encryption algorithm, security analysis, C sharp languageIII目 录第 1 章 绪论 .11.1 课题研究的背景及意义 .11.2 加密算法的发展历程和应用 .11.3 本文的研究内容 .2第 2 章 C#语言与 Microsoft Visual Studio.42.1 编程语言的发展历史 .42.1.1 机器语言 .42.1.2 汇编语言 .42.1.3 高级语言 .42
10、.1.4 高级语言与汇编语言的比较 .52.2 .NET 框架简介 .52.2.1 .NET 框架的概念 .52.2.2 .NET 框架体系结构 .62.2.3 C#语言在.NET 框架中的作用及其特性 .62.3 C#语言介绍 .72.3.1 C#语言的由来 .72.3.2 C#语言的变量和常量 .82.3.3 运算符和表达式 .82.3.4 数组和队列 .92.3.5 程序流程的控制 .102.4 Visual Studio 开发软件 .102.4.1 Visual Studio 简介 .102.4.1 Visual Studio 的发展历史 .11第 3 章 密码学及典型现代加密算法介绍
11、 .133.1 密码学简介 .133.2 密码学基本概念 .133.3 加密算法的分类 .143.3.1 对称加密算法 .143.3.2 非对称加密算法 .153.3.3 不可逆加密算法 .153.4 DES 算法介绍 .163.4.1 DES 加密算法 .163.4.2 DES 算法原理 .16第 4 章 DES 算法的软件实现 .254.1 程序框架 .254.1.1 加密模块 .254.1.2 解密模块 .264.1.3 DES 加密函数模块 .264.2 程序运行测试 .274.2.1 程序加密测试 .274.2.2 程序解密测试 .28第 5 章 DES 算法安全性分析与改进构想 .
12、30IV5.1 DES 算法安全性分析 .305.1.1 DES 算法缺陷分析 .305.1.2 DES 算法密钥的破译方法 .305.2 DES 算法改进构想 .315.2.1 DES 算法改进构想的提出 .315.2.2 DES 算法改进过程 .325.2.3 改进 DES 算法安全性分析 .33结 论 .34参考文献 .35致 谢 .36附 录 .1移动通信移动台加密算法研究1DES 加密算法的研究及 C#软件实现第 1 章 绪论1.1 课题研究的背景及意义通信是现代人生活中重要的组成部分,在移动通信中交换信息最主要的方式是通过手机进行。近些年来伴随着手机网络建设越来越完善,人们享受着越
13、来越快的网速,运营商提供的服务也越来越多,如手机打车,移动支付,手机购物,手机导航等等。移动通信使人们生活越来越便捷,但在使用移动通信服务时的安全性也越来越受到人们的关注,特别在涉及敏感信息时,如果敏感信息遭到泄露,轻则影响人们正常的工作和生活,重则造成人们经济财产受到损失。为了防止此类事件的发生,人们必须对移动通信的内容进行加密。当系统受到非法攻击时保证敏感信息不被窃取,使其只能被合法用户解读,这对于密码学的研究有着强烈的需求。密码学作为一门科学学科,由香农在第二次世界大战期间创立。在二十世纪七十年代,伴随着迪菲与赫尔曼发明的公用密钥加密算法的诞生,密码学领域的学术研究彻底腾飞。在过去的几十
14、年时间里,密码学逐渐演变成为一门成熟的学科,它又分为以下几个子学科,如密码学基础,加密算法研究,加密协议研究,以及加密的安全性和有效性研究等。在过去的二十年间随着科技的进步以及互联网发展,硬件和通信成本急剧降低,而需要处理和储存的用户数据越来越多,这催生了大量的密码学的应用,在这种情况下,各种加密算法应运而生。众多加密算法被分为两类,对称加密算法和非对称加密算法。其中非对称加密算法虽然安全性比对称加密算法要高,但是算法强度较高,系统开销较大且加密解密速度没有对称加密算法快,并不适合在移动即时通信软件中使用。而在这种情况下对称加密算法显然是更加合适的选择。因此,本文着重对对称加密算法中的 DES
15、 算法进行研究,并期望将其应用于类似微信这种即时通信软件中。1.2 加密算法的发展历程和应用密码学是一门历史悠久学科,说他历史悠久是因为早在几千年前人类就已经有了对通信内容进行加密的思想,如置换和易位等加密方法。但近些年来随着计算机网络的发展,相关的应用层出不穷,如电子商务,银行在线系统等又推动了数据加密技术的发展。可见,近些年崛起的数据加密技术,使得密码学又可以被称为一门年轻的学科 1。移动通信移动台加密算法研究2密 码 学 可 以 分 为 两 个 部 分 :应 用 于 编 写 密 码 以 保 护 通 信 内 容 的 部 分 称 为 编码 学 , 这 便 是 加 密 算 法 主 要 的 研
16、究 领 域 ; 应 用 于 破 译 密 码 以 获 得 通 信 机 密 的 部分 称 为 破 译 学 , 两 部 分 总 称 密 码 学 2。从整体上来说加密算法的发展可以分为三个阶段:1. 古典密码时期:从古代到 19 世纪末,几千年的时间被称为古典密码时期。这一时期使用的数据加密手段还仅仅是使用纸笔或简单的器械进行的置换和易位,因此加密算法的复杂程度较低,相对容易破解并且安全性不高,不过具有一定的艺术性,被称为古典加密算法。置换就是使用密文字符代替明文字符,在隐藏明文字符的同时保持了明文字符原有的位置。而易位则是通过重新排列明文字符的顺序来实现对真实信息的加密。典型的密码有凯撒密码,维吉尼
17、亚密码等。2. 近代密码时期:从 20 世纪初到 20 世纪 50 年代,随着工业革命的来临和两次世界大战的爆发,密码学走向了逻辑-机械时代,此时出现了一些手工或电动机械实现的复杂的加密算法。尽管密码学取得了一定的发展,但这个时期的数据加密还只是针对字符进行的,加密算法思想还是以置换和易位为主,当时人们仍然视加密算法为一门艺术。这一时期典型的加密算法有 Verman 密码,转轮密码等。3. 现代密码时期:从 1946 年世界上第一台电子计算机的诞生以来,计算机技术发展迅速,这使得使用计算机运行复杂的加密算法成为了可能。由于将加密算法和计算机的高效运算能力相结合,加密算法在复杂性和安全性上都得到
18、了前所未有的提高。数据加密技术由此从机械加密时代发展到了电子加密时代。1976 年由迪菲和赫尔曼提出的公开密钥加密技术,将密码学引入了一个新的研究方向。从那以后公用密钥加密领域发展出大量不同的加密技术,如数字签名,密钥协商等等。公用密钥加密技术可以保证在消息传输过程中的安全性。消息的发送者使用消息接收者的公开密钥对消息的内容进行加密,接着加密后的消息通过电子媒介传递给接收者,然后接收者使用与其自己相匹配的私有密钥对消息进行解密。同时在信息技术快速发展的今天,新的加密技术也在不断的出现,例如量子密码及 DNA 密码等新兴加密技术都是密码学中的新生力量。这一时期典型的密码有 DES,AES,RC4
19、 , RSA 等。1.3 本文的研究内容本文介绍了密码学及其发展历史,在对对称加密算法中的典型算法 DES 算法介绍的同时对其安全性也进行了分析,最后利用 C#语言对 DES 加密算法进行编移动通信移动台加密算法研究3程实现,使其能够被应用于移动即时通信软件中,从而保障传输信息的安全性。本文的主要研究内容如下:1. 介绍了使用到的编程语言 C#语言,介绍了编程语言.NET 框架,分析了它的特点并对 C#语言基本语法进行了简单的描述。同时介绍了使用到的编程平台Visual Studio,阐述了它的发展历程和主要特点。2. 描述了密码学的发展历程、学科背景和其中的基本概念,然后介绍了现代加密算法中
20、的三种加密算法:对称加密算法、非对称加密算法以及不可逆加密算法。3. 阐述了 DES 算法基本原理,详细介绍了加密和解密过程以及其中涉及到的基本运算。4. 对 DES 加密算法进行编程实现,并对程序的基本思想进行了详细的介绍,同时说明了加密算法的应用场景和应用时需注意的问题。5. 分析了 DES 算法的缺陷,描述了 DES 算法密钥破译的方法。提出了弥补缺陷并提高算法安全性的措施。1.4 本章小结本章详细介绍了 DES 算法研究及 C#软件实现这一课题的研究背景和意义,简单来说就是为了提高移动即时通信的安全性。同时以时间为顺序简单介绍了加密算法的发展历程和应用,并为后期研究作了铺垫。最后说明了
21、本文的主要研究内容。移动通信移动台加密算法研究4第 2 章 C#语言与 Microsoft Visual Studio2.1 编程语言的发展历史编程语言是一种正式的构造语言,用来与机器特别是计算机进行交流。编程语言可以用来编写应用程序,进而控制机器的行为或是执行算法。编程语言从机器语言开始,后来发展为汇编语言,之后步入高级语言 3。最早的编程语言在电子计算机的发明之前出现,当时被用来指导纺织机之类的机器进行工作或者用来演奏钢琴。直到今天,数千种编程语言已经被发明出来,其主要集中在计算机领域,同时许多编程语言每年正不断的被开发出来。一些编程语言以命令的形式进行执行,而其他编程语言则是以声明的形式
22、进行编程。对于编程语言的描述通常分为两个部分:语法和语义。一些编程语言是由规范标准来定义的,例如 C 语言是按照 ISO 标准,而其他编程语言是通过被当作参考组件来主导实现的,例如 Perl 语言。2.1.1 机器语言计算机内部使用的是由 0 和 1 组成的二进制数,二进制数指令是与计算机进行交互最直接的方式。计算机刚刚发明的时候,人们只能通过机器语言来编写程序,然后交由计算机执行。这种由 0 和 1 组成的指令语言就是机器语言。机器语言由计算机中央处理单元(CPU)直接执行。每一条指令执行特定的操作,例如加载、转移或者对于 CPU 寄存器或内存中存储的数据进行运算器操作等。每一个程序都由一系
23、列这样的指令组成,这些指令直接由 CPU 执行。2.1.2 汇编语言汇编语言是一门利用指令的助记符、符号地址、标号来编写程序的语言。它是机器语言的符号表示,也是一种低级语言。源程序就是使用汇编语言编写的程序,它由指令构成语句。源程序通过汇编和链接过程生成可执行程序,然后才能被执行。汇编语言和硬件相关,不同的计算机使用不同的 CPU 进而使用不同的汇编语言。汇编语言充分利用了 CPU 等硬件的结构特点,可直接实现对于 I/O 设备的操作。其程序效率高、节省内存且运行速度快,对于编写直接对硬件进行操作的程序有着极大的便利。2.1.3 高级语言在计算机科学中,高级编程语言是相对于汇编语言等低级编程语
24、言而言的。其中包含了很多编程语言,并不特指某一种具体的语言,如现在广泛使用的移动通信移动台加密算法研究5C#、C+、Java 等。不同编程语言的语法和指令的格式不尽相同。高级语言也经历了从面向化过程到非面向化过程的改变历程。同时,软件的开发流程也从最初的个人封闭式生产发展为流程化、产业化的工业化生产。高级语言所编写的程序不能直接被计算机执行,一定要进行相应的转换之后才能够执行。而按照转换的方式可以将高级语言分为两类:解释类和编译类。1. 解释类:应用程序的源代码在被翻译器翻译成目标语言(机器语言)的同时被执行。因此效率较低,不能脱离翻译器生成可独立执行的可执行文件。不过这种方式比较灵活,可以随
25、时对程序代码进行修改。2. 编译类:指在应用程序被执行之前,源代码已经被翻译成了目标语言(机器语言) 。因此,编译类的应用程序可以脱离语言环境独立执行,其特点是操作灵活,效率较高。不过如果需要对程序进行修改,必须要先修改程序源代码,然后重新编译生成可执行文件才能再次执行。如果目标文件没有源代码的时候,修改就会很不方便。目前大部分高级语言采用编译类。2.1.4 高级语言与汇编语言的比较高级语言接近于自然语言,比较容易理解便于编程,不跟硬件直接发生关系,而其编写的程序必须先翻译为低级语言才能够被执行。汇编语言编写的程序是直接对硬件进行的操作,因此其运行效率比高级语言要高。编程人员一般使用高级语言编
26、写程序,当需要的代码效率较高时可以采用高级语言和汇编语言混合的形式进行编程。2.2 .NET 框架简介2.2.1 .NET 框架的概念2000 年 6 月 22 日,不论对于微软还是整个 IT 行业来说都是值得纪念的一天,因为这一天微软公司正式推出了其下一代计算计划 Microsoft.NET(下文简称.NET)。这项计划使得在 Web 时代微软现有的软件不仅可以在传统的 PC 中使用,也可以满足当前增长势头迅猛的新设备,例如蜂窝数字电话以及平板电脑等的需要。微软同时计划通过开发新的工具来吸引软件开发人员和合作伙伴对于.NET 框架的认同,并开发出基于 Internet 的应用。.NET 主要是扮演一个开发平台的角色,它定义了公共语言子集(Common Language Subnet,CLS ) ,这是一种支持在其规范语言和类库之间提供完全集成的混合语言 4。 .NET 对编程类库进行了统一,建立了下一代网络通信的标准。它对可扩展标记语言(Extensible Markup Language, CLS)的完全支持使得应用程序的开发变得更加简单。微软通过.NET 计划在其软件中添加的手写和语音识别等