毕业设计(论文)文档加密器的开发及测试.doc

上传人:仙人指路1688 文档编号:3982832 上传时间:2023-03-30 格式:DOC 页数:19 大小:289KB
返回 下载 相关 举报
毕业设计(论文)文档加密器的开发及测试.doc_第1页
第1页 / 共19页
毕业设计(论文)文档加密器的开发及测试.doc_第2页
第2页 / 共19页
毕业设计(论文)文档加密器的开发及测试.doc_第3页
第3页 / 共19页
毕业设计(论文)文档加密器的开发及测试.doc_第4页
第4页 / 共19页
毕业设计(论文)文档加密器的开发及测试.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《毕业设计(论文)文档加密器的开发及测试.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)文档加密器的开发及测试.doc(19页珍藏版)》请在三一办公上搜索。

1、文档加密器的开发及测试摘 要随着计算机和通信技术的迅猛发展,大量敏感信息通过公共通信设施或计算机网络进行交换,特别是Internet的广泛应用、电子商务和电子政务的迅速发展,越来越多的个人信息需要严格保密,如银行账号、个人隐私等。正是这种对信息的机密性与真实性的需求,很有必要设计一个加密软件对其敏感信息加密。一个好的加密工具能够让用户方便快捷对重要信息进行有效保护,从而大大降低了公司的重要信息泄露的安全隐患,真正做到机密信息只供有权限的用户查阅。本系统采用ASP.NET (C#)作为开发工具,系统主要功能包含:加密文件的密码设置、加密文件、解密密码的验证、解密文件等。加密功能需要扩展的方面有:

2、对网络数据流加密和解密;对节点加密和节点解密;对数据打包封装,实现网络上使用密文传输;局部文本加密替换。此外,密钥的分配必须通过安全的渠道进行传输,因为密钥的管理是关系到整个加密方案的重要安全因素。关键词:DES加密器;ASP.NET (C#);文件加密;文件解密The Implementation of a Document Encrypter Based on C#AbstractWith the rapid development of the computer and communication technologies, large mount of sensitive inform

3、ation are exchanged on the public communications facilities or computer networks. Especially under the situation of the widespread of the Internet applications, such as E-commerce and E-government, more and more information, such as bank account numbers, personal privacy, need to be encrypted. Such

4、requirement for the secrecy and authenticity makes it necessary to develop an encrypter to encrypt the sensitive information. This system, developed with ASP.NET (C #), primarily includes such functions as setting the password of the document to be encrypted, encrypting the document, verifying the d

5、ecryption password and decrypting the document. What needs to expand include encrypting and decrypting the network data or data on hosts; packaging data on the Internet and implementing encrypted transmission; replacing partial text in encrypted document. Besides, keys need to be transmitted on the

6、safety channel because key management is the critical safety factor of the entire document. Users can protect their important data and prevent the unauthenticated persons from stealing the information by using the entrypter. Encryption is the key means to protect the important information, and decry

7、ption is to restore the encrypted data to make it readable.Key words: The DES encrypter; ASP.NET ( C#); Document encryption; the Document decryption目 录论文总页数:22页1引言1.1课题背景1.2 国内外研究的现状1.2.1公钥密码1.2 .2分组密码1.2.3 序列密码1.2.4认证码1.2.5数字签名1.3本课题研究的意义1.4 本课题的研究方法2 DES算法描述2.1 DES2.2 DES算法详述2.3算法的编程实现2.4 DES算法的应用

8、误区及避开方法3软件设计与实现3.1 程序结构图3.2关键代码的设计3.3开发完成程序调试截图4测试4.1加密方面的测试实验用例4.2解密方面的测试实验用例结 论参考文献1引言1.1课题背景 密码技术是信息安全技术的核心,它主要由密码编码技术和密码分析技术两个分支组成。密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密或认证的要求。密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取 本文出处:火柴天堂社区 机密信息或进行诈骗破坏活动。这两个分支既相互对立又相互依存,正是由于这种对立统一关系,才推动了密码学自身的发展。目前人们将密码理论与技术分成两大类,一类

9、是基于数学的密码理论与技术,包括公钥密码、分组密码、序列密码、认证码、数字签名、Hash 函数、身份识别、密钥管理、PKI 技术、VPN 技术等;另一类是非数学的密码理论与技术,包括信息隐藏、量子密码、基于生物特征的识别理论与技术等。1.2 国内外研究的现状1.2.1公钥密码 自从1976 年公钥密码的思想提出以来,国际上已经提出了许多种公钥密码体制,如基于大整数因子分解问题的RSA 体制和Rabin 体制、基于有限域上的离散对数问题的Diffie-Hellman 公钥体制和ElGamal 体制、基于椭圆曲线上的离散对数问题的Diffie-Hellman公钥体制和ElGamal 体制、基于背包

10、问题的Merkle-Hellman 体制和Chor-Rivest 体制、基于代数编码理论的Mealiest 体制、基于有限自动机理论的公钥体制等等。用抽象的观点来看,公钥密码体制就是一种陷门单向函数。我们说一个函数f 是单向函数,若对它的定义域中的任意x 都易于计算f(x),而对f 的值域中的几乎所有的y,即使当f 为已知时要计算f 1(y)在计算上也是不可行的。若当给定某些辅助信息(陷门信 息)时易于计算f 1(y),就称单向函数f 是一个陷门单向函数。公钥密码体制就是基于这一原理而设计的,将辅助信息(陷门信息)作为秘密密钥。这类密码的安全强度取决于它所依据的问题的计算复杂性。 目前比较流行

11、的公钥密码体制主要有两类:一类是基于大整数因子分解问题的,其中最典型的代表是RSA 体制。另一类是基于离散对数问题的,如ElGamal 公钥密码体制和影响比 较大的椭圆曲线公钥密码体制。由于分解大整数的能力日益增强,因此为保证RSA 体制的安全性总是要增加模长。目前768bit 模长的RSA 体制已不安全。一般建议使用1024bit 模长,预计要保证20 年的安全性就要选择2048bit 的模长,增大模长带来了实现上的难度。而基于离散对数问题的公钥密码在目前技术下512bit 模长就能够保证其安全性。特别是椭圆曲线上的离散对数的计算要比有限域上的离散对数的计算更困难,目前技术下只需要160bi

12、t 模长即可保证其安全性,适合于智能卡的实现,因而受到国际上的广泛关注。国际上制定了椭圆曲线公钥密码标准IEEEP1363。 目前,公钥密码的重点研究方向为: 1)用于设计公钥密码的新的数学模型和陷门单向函数的研究; 2)针对实际应用环境的公钥密码的设计; 3)公钥密码的快速实现研究,包括算法优化和程序优化、软件实现和硬件实现; 4)公钥密码的安全性评估问题,特别是椭圆曲线公钥密码的安全性评估问题1.2 .2分组密码 美国国家标准技术研究所( NIST)在1997 年1 月2 日正式宣布了NIST 计划,该计划公开征集和评估新的候选标准,新的标准称之为AES。作为进入AES 程序的一个条件,开

13、发者必须承诺放弃被选中算法的知识产权。许多个人和公司积极响应,到1998 年8 月20日,NIST 指定了15 个候选者。1999 年8 月,NIST 从中筛选出5 个候选者。人们为了比较出最终算法发表了许多论文,公布了大量的统计数据,每个算法都有它的优点和弱点。在2000年10 月2 日,NIST 宣布获胜者为一个称之为Rijndael 的算法,这是比利时学者Vince nt Rijmen和Joan Daemen发明的。2001 年11 月26 日,NIST 正式公布了新标准AES,其编号为FIPS PUBS197。如同DES 一样,人们期望AES 也能成为世界性的标准。预期过不了多久,只要

14、有人有密码系统,就肯定有AES。 AES 活动使得国际上又掀起了一次研究分组密码的新高潮。继美国征集AES 活动之后。欧洲(称之为Nessie 计划)和日本也不甘落后启动了相关标准的征集和制定,这些计划看起来比美国的计划更宏伟。同时美国等一些国家为适应技术发展的需求也加快了其他密码标准的更新,比如SHA-1 和FIPS140-1。我国在国家“863”计划中也将制定密码的标准化问题列入了议程。 目前,分组密码的重点研究方向为: 1)新型分组密码的研究; 2)分组密码安全性综合评估原理与准则的研究; 3)分组密码的实现研究,包括软件优化、硬件实现和专用芯片等; 4)用于设计分组密码的各种组件的研究

15、; 5)AES 的分析及其应用研究。1.2.3 序列密码 序列密码虽然主要用于政府、军方等国家要害部门,而且用于这些部门的理论和技术都是保密的,但由于一些数学工具(比如代数、数论、概率等)可用于研究序列密码,其理论和技术相对而言比较成熟。从20 世纪80 年代中期到90 年代初,序列密码的研究非常热,特别是在序列密码的设计方法、序列密码的安全性度量指标、序列密码的分析方法、用于设计序列密码的各种组件(如密码布尔函数的构作与分析、非线性资源的生成和分析)等方面取得了一大批有理论和应用价值的成果。 在序列密码的设计方法方面,人们将设计序列密码的方法归纳为4 种,即系统论方法、复杂性理论方法、信息论

16、方法和随机化方法;将同步流密码的密钥流生成器分解成驱动部分和非线性组合部分,这样做不仅结构简单,而且便于从理论上分析这类生成器;提出了非线性组合生成器、非线性滤波生成器和钟控生成器等多种具体设计方法。在序列密码的安全性度量指标方面,人们提出了线性复杂度轮廓、跃复杂度、K-错误复杂度(球复杂度)、球周期、非线性复杂度等多种度量序列随机性和稳定性的指标,并对指标进行了深入研究。 在序列密码的分析方法方面,提出了分别征服攻击方法、线性攻击方法、线性伴随式攻击方法、线性一致性攻击方法、快速相关攻击方法、线性时序逻辑逼近方法、熵漏分析方法等多种有效的分析方法。 在密码布尔函数的构作与分析方面,提出了构造

17、布尔函数的多种设计准则,如相关免疫性、线性结构、严格雪崩特性、扩散特性、平衡性、非线性性、差分均匀性等,构造了一大批满足上述若干准则的布尔函数,同时,对这些准则之间的关系也进行了深入研究。在非线性资源的生成和分析方面,对环上序列的生成和结构进行了深入研究和刻画,诱导出的二元序列具有良好的密码学特性。在研究方法方面,将谱技术、概率统计方法、纠错编码技术、有限域理论等有效地用于序列密码的研究。 近年来,序列密码的研究虽然不像原来那么热,但有很多有价值的公开问题需要进一步研究,比如自同步流密码的研究、有记忆前馈网络密码系统的研究、多输出密码函数的研究、混沌序列密码和新研究方法的探索等。另外,虽然没有

18、制定序列密码标准,但在一些系统中广泛使用了序列密码比如RC4,用于存储加密。事实上,欧洲的NESSIE 计划中已经包括了序列密码标准的制定,这一举措有可能导致序列密码研究热。 1.2.4认证码 认证码最早是由Gilbert 提出的,但Simmons 于1984 年首次系统地提出了认证码的信息理论。其主要研究目标有两个,一个是推导欺骗者欺骗成功的概率的下界;另一个是构造欺骗者欺骗成功的概率尽可能小的认证码。20 世纪80 年代中期以来,在认证码的构造和界的估计等方面已经取得了一大批研究成果。但目前认证码的应用非常有限,几乎停留在理论研究上。当然,仍有许多理论问题需要进一步研究,如具有保密功能的认

19、证码的研究、仲裁认证码的研究、认证码的实用化研究,等等。1.2.5数字签名 数字签名是对电子形式的消息签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,特别是公钥密码体制的诞生为数字签名的研究和应用开辟了一条广阔的道路。关于数字签名技术的研究,目前主要集 中于基于公钥密码体制的数字签名技术的研究。数字签名的研究内容非常丰富,包括普通数字签名和特殊数字签名。普通数字签名算法有RSA 数字签名算法、ElGamal 数字签名算法、Fiat-Shamir 数字签名算法、Guillou-Quisquarter 数字签名算法、Schnorr 数字签名算法

20、、Ong-Schnorr-Shamir 数字签名算法、美国的数字签名标准/算法(DSS/DSA),椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS),部分州已制定了数字签名法。一些国家如法国和德国已经制定了数字签名法。1.3本课题研究的意义古往今来,通信中的安全保密问题一直受到广泛关注。历史上,交战双方在通信安全、保密和密码破译方面的优势均被认为是取得战争胜利的关

21、键因素之一。今天,人类已进入信息化 时代,现代通信涉及各个行业,信息安全已成为人人都关心的问题,这就促使密码学揭去了神秘的面纱,为更广泛的领域和大众服务。1.4 本课题的研究方法综合了加密方案的具体需求,选用ASP.NET(C#)作为开发工具、使用DES作为数据加密算法,这种加密算法加密速度快,适合对大量数据文件的加密。通过C#开发的软件是个伪可执行程序,只要该用户安装有开发相同的环境,就可以直接运行。软件工程开发方法,在经过深入地学习之后,开发了基于C#的DES加密器。下面我将具体介绍系统的开发过程:2 DES算法描述2.1 DES美国早在1977 年就制定了自己的数据加密标准DES。随着D

22、ES 的出现,人们对分组密码展开了深入的研究和讨论。现已有大量的分组密码,如DES 的各种变形、IDEA 算法、SAFER 系列算法、RC 系列算法、Skipjack 算法、Rijndael 算法、FEAL 系列算法、REDOC系列算法、LOKI 系列算法,CAST 系列算法、Khufu、Khafre、MMB、3-WAY、TEA、MacGuffin、SHARK、BEAR、LION、CA.1.1、CRAB、Blowfish、GOST、SQUARE、MISTY,等等。 本文出处:火柴天堂社区 用抽象的观点来看,分组密码就是一种满足下列条件的映射E: mKm F S F 2 2 . :对每个k.SK

23、, E ( , k)是从m F2 到m F2 的一个置换。可见,设计分组密码的问题在于找到 本文出处:火柴天堂社区 一种算法,能在密钥控制下从一个足够大且足够“好”的置换子集合中,简单而迅速地选出一个置换。一个好的分组密码应该是既难破译又容易实现,即加密函数E ( , k)和解密函数D ( , k)都必须容易计算,但是至少要从方程y=E (x, k)或x=D (y, k)中求出密钥k 应该是一个困难问题。 本文出处:火柴天堂社区 本文出处:火柴天堂社区 DES是一种分组加密算法,他以64位为分组对数据加密。64位一组的明文从算法的一端 输入,64位的密文从另一端输出。DES是一个对称算法:加密

24、和解密用的是同一个算法(除 密钥编排不同以外)。 密钥的长度为56位(密钥通常表示为64位的数,但每个第8位都用作奇偶检验,可以忽 略)。密钥可以是任意的56位数,且可以在任意的时候改变。DES算法的入口参数有3个:Key,Data,Mode。其中Key为8个字节共64位,是DES算法 的工作密钥;Data也为8个字节64位,是要被加密或解密的数据:Mode为DES的工作方式,有两种:加密或解密。 DES算法的工作过程:若Mode为加密,则用Key对数据Data进行加密,生成Data的密码 形式(64位)作为DES的输出结果;若Mode为解密,则用Key对密码形式的数据Data解密,还 原为D

25、ata的明码形式(64位)作为DES的输出结果。 在通信网络的两端,双方约定了一致的Key,在通信的源点用Key对核心数据进行DES加密 ,然后以密码形式通过公共通信网(如电话网)传输到通信网络的终点,数据达到目的 地后,用同样的Key对密码数据进行解密,便再现了明码形式的核心数据。这样便保证了核 心数据(如PIN,MAC等)在公共通信网中传输的安全性和可靠性。通过定期在通信网络的源 端和目的端同时改用新的Key,便能更进一步提高数据的保密性,这正是现在金融界交易网 络的流行作法。 简单地说,算法只不过是加密的一种基本技术,DES基本组建分组是这些技术的一种组合 ,他基于密钥作用于明文,这是众

26、所周知的轮(round)。DES有16轮,这意味着要在明文分 组上16次实施相同的组合技术。2.2 DES算法详述DES算法把64位的明文输入块变为64位的密文输出块,他所使用的密钥也是64位,DES对64 位的明文分组进行操作。通过一个初始置换,将明文分组分成左半部分和右半部分,各32位 长。然后进行16轮相同的运算,这些相同的运算被称为函数f,在运算过程中数据和密钥相结合。经过16轮运算后左、右部分在一起经过一个置换(初始置换的逆置换),这样算法就完成了。 (1)初始置换 其功能是把输入的64位数据块按位重新组合,并把输出分为L0,R0两部分,每部分各 长32位,其置换规则如表1所示。表1

27、初始置换58,50,42,34,26,18, 10, 2,60,52,44,36,28,20,12,462,54,46,38,30,22,14, 6,64,56,48,40,32,24,15, 857,49,41,33,25,17,09, 1,59,51,43,35,27,19,11,361,53,45,37,29,21,13, 5,63,55,47,39,31,23,15,7即将输入的第58位换到第1位,第50位换到第2位,依次类推,最后一位是原来的 第7位,L0,R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。例:设置换前 的输入值为D1D2D3D64,则经过初始置换后的

28、结果为:L0=D58D50D8;R0=D57D497。 (2)逆置换 经过16次迭代运算后,得到L16,R16,将此作为输入进行逆置换,即得到密文输出。 逆置换正好是初始置换的逆运算。例如,第1位经过初始置换后,处于第40位,而通过逆置 换,又将第40位换回到第1位,其逆置换的规则如表2所示。 表2逆置换40,8,48,16,56,24,64,32,39, 7,47,15,55,23,63,3138,6,46,14,54,22,62,30,37, 5,45,13,53,21,61,2936,4,44,12,52,20,60,28,35, 3,43,11,51,19,59,2734,2,42,1

29、0,50,18,58,26,33, 1,41,9,49,17,57,25 (1)函数f(Ri,Ki)的计算其算法描述如图1所示。 图1 算法描述在图1中,“扩展置换”是将32位放大成48位,“P盒置换”是32位到32位换位,其换位 规则分别 如表3、表4所示。表3扩展置换表32,1,2,3,4 ,5 ,4 ,5 ,6 ,7 ,8 ,98,9,10,11,12,13,12,13,14,15,16,1716,17,18,19,20,21,20,21,22,23,24,2524,25,26,27,28,29,28,29,30,31,32,1表4 P盒置换表16,7,20,21,29,12,28,17

30、,1,15,23,16,23,26,5,18,31,10,2,8,24,14,32,27, 3, 9,19,13 ,30, 6,22,11, 4,25 在(Ri,Ki)算法描述图中,S1,S2,S8为选择函数,其功能是把6 b数 据变为4 b数据。下面以选择函数S1为例说明其功能。其选择函数S1的功能表如表5所 示。表5选择函数S1的功能表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,

31、3,10, 5, 015,12, 8, 2, 4, 9, 1, 7, 5,11, 3,14,10, 0, 6,13通过表5可以看到,在S1中共有4行数据,分别命名为0,1,2,3行,每行有16列,分 别命名为0,1,2,3,14,15列。 现设输入为:D=D1D2D3D4D5D6 令:列=D2D3D4D5,行=D1D6 然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出 。 (4)子密钥Ki(48 b)的生成算法 开始,由于不考虑每个字节的第8位,DES的密钥从64位变为48位,如表6所示,首先56位 密钥被分成两个部分,每部分28位,然后根据轮数,两部分分别循环左移l或2

32、位。表6 密钥置换57,49,41,32,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, 4DES算法规定,其中第8,16,64位是奇偶校验位,不参与DES运算。故Key实际可用 位数只有56位。即:经过密钥置换表的变换后,Key的位数由64位变成了56位,此56位分为C 0,D0两部分,各28位,然后分别进行第一次循环左移,得到C1,D1

33、,将C1(28位),D1(28位 )合并得到56位,再经过压缩置换,从而便得到了密钥K0(48位)。依次类推,便可得到K1,K 2,K15。需要注意的是,16次循环左移对应的左移位数要依据表7所示的规则进行。 以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅在于第一次迭代 时用子密钥K15,第二次是K14,最后一次用K0,算法本身并没有任何变化。表7循环左移位数轮 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,12.3算法的编程实现 (一)int des(char *da

34、ta, char *key,int readlen)参数:1.存放待加密明文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.待加密明文的长度(8字节的倍数)功能: 生成加密密钥,把待加密的明文数据分割成64位的块,逐块完成16次迭代加密,密文存放data所指向的内存中。(二)int Ddes(char *data, char *key,int readlen)参数:1.存放待解密文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.待解密文的长度( 8字节的倍数)功能: 生成解密密钥,把待解密文分割成64位的块,逐块完成16次

35、迭代解密,解密后的明文存放在data所指向的内存中。(三)int des3(char *data, char *key, int n ,int readlen)参数:1.存放待加密明文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定进行多少层加密4.待加密明文的长度(8字节的倍数)功能: 生成加密密钥,把待加密的明文分割成64位的块,把第i-1层加密后的密文作为第i层的明文输入,根据用户指定的加密层数进行n层加密,最终生成的密文存放在data所指向内存中。说明:用户仅仅输入一条密钥,所有的加密密钥都是由这条密钥生成.(四)int Ddes3(char

36、 *data, char*key, int n ,int readlen)参数:1.存放待解密文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定进行多少层解密4.待解密文的长度(8字节的倍数)功能: 生成解密密钥,把待解密文分割成64位的块,把第i-1层解密后的明文作为第i层解密密文输入,根据用户指定的解密层数进行n层解密,最终生成的明文存放在data所指向内存中。说明:用户仅仅输入一条密钥,所有的解密密钥都是由这条密钥生成.(五) int desN(char*data,char*key,int n_key,int readlen)参数:1.存放待加

37、密明文的内存指针(长度为readlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定了多少条密钥4.待加密明文的长度(8字节的倍数)功能: 生成加密密钥,把待加密的明文分割成64位的块,把第i-1层加密后的密文作为第i层加密的明文输入,根据用户指定的加密层数进行n层加密,最终生成的密文存放在data所指向的内存中。说明:这里用户通过输入的密钥条数决定加密的层数,每轮16次迭代加密所使用的加密密钥是由用户自定的对应密钥生成。(六) int DdesN(char *data,char *key,int n_key,int readlen)参数:1.存放待解密文的内存指针(长度为rea

38、dlen,可能经过填充;2.存放用户输入的密钥内存的指针3.用户指定了多少条密钥4.待解密文的长度(8字节的倍数)功能: 生成解密密钥,把待解密文分割成64位的块,把第i-1层解密后的”明文”作为第i层解的密文输入,根据用户指定的解密层数进行n层解密,最终生成的明文存放在data所指向的内存中。说明:这里用户通过输入的密钥条数决定解密的层数,每轮16次迭代加密所使用的解密密钥是由用户自定的对应。2.4 DES算法的应用误区及避开方法DES算法具有极高的安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为256,这意味着如果一台计算机的

39、速度 是每秒检测一百万个密钥,则他搜索完全部密钥就需要将近2 285年的时间,可见这是难以实现的。当然,随着科学技术的发展,当出现超高速计算机后,可以考虑把DES密钥的长度再增长一些,以此来达到更高的保密程度。由上述DES算法介绍可以看到,DES算法中只用到64位密钥中的其中56位,而第8,16, 24,64位8个位并未参与DES运算,这一点,提出了一个应用上的要求,即DES 的安全性是基于除了8,16,24,64位外的其余56位的组合变化才得以保证的。因此 ,在实际应用中,应避开使用第8,16,24,64位作为DES密钥的有效数据位,才能保 证DES算法安全可靠。对运用DES来达到保密作用的

40、系统产生数据被破译的危险,这正是DES 算法在应用上的误区。 避开DES算法应用误区的具体操作:在DES密钥Key的使用、管理及密钥更换的过程中,应 绝 对避开DES算法的应用误区,即绝对不能把Key的第8,16,24,64位作为有效数据位 来对Key进行管理,这一点,对应用DES加密的用户来说要高度重视。有些网络, 利用定期更换DES密钥Key的办法来进一步提高系统的安全性和可靠性,如果忽略了上述应用 误区,那么,更换新密钥将是徒劳的,对网络的安全运行将十分危险,所以更换密钥一 定要保证新Key与旧Key真正的不同,即除了第8,16,24,64位以外其他位数据发生 了变化,这一点是非常重要的

41、。 目前加密算法已被广泛的应用,随着信息化和数字化社会的发展,随着计算机Internet的普及,密码学必将在国家安全、经济交流、网络安全及人民生活等方面发挥更大作用 。3软件设计与实现本软件设计和实现的功能主要有两个方面,一是对文件的加密,二是对加密的文件的解密工作。还附带了用户自己设定文件密码,密码验证和各个操作的正确性的提示。所以将加密器分为2个子模块:1文件加密,2文件解密。加密功能待完成网络方面数据流加密节点加密和节点解密。对数据打包封装在网络上进行密文传输。局部文本加密替换功能也是一个研究的方面。密钥的分配和更改需要通过必要的渠道进行传输,密钥的管理也关系到整个加密文件的安全因数。3

42、.1 程序结构图DES加密文档加密文档解密选择加密对话框选择保存对话框设置密码确认密码选择加密文件输出文件名选择输入密码图2 程序结构图3.2关键代码的设计3.3开发完成程序调试截图图3加密初始界面这里是加密器开发完成时的,未进行文件加密和解密工作时的图形示范。从图中我们可以看到,完成了相关开发要求。分为2个大的模块,一是文件加密的GROUPBOX1,二是文件解密GROUPBOX2。在初始条件下,本软件的加密控件为不可用的,图中我们用绿色字体标出位置。只有满足选取了加密文件、设定了输出文件名和密码且符合密码长度大于6和两次密码一致,这些的限制条件才能够进行文件的加密。加密完成的内容写入到我门选

43、择的保存文件夹的目录文件中及第二项的输出文件名的路径里面。如果我们不通过解密想查看其.mef文件中的内容,用其他方式打开该文件只能获得一些毫无价值的乱码信息。图4 加密文件界面按照上述要求,我们对一个位与该系统的F:修改要求的.txt的纯文本文件进行加密操作。加密时可以对文件点击浏览按纽进行选取,也可以直接在对话框中直接输入。保存文件这里选取F:miwen.mef这里的.mef是我们加密保存设定的默认格式,当然你也可以保存你希望的格式文件。这里我两次密码设定为1234567。单击确定按钮后,开始加密按钮才为可用。表明你在密码的设定两次都是符合长度大于6内容还一致的,也选择了加密文件和保存文件路

44、径,并且路径是合法的。图5文件加密成功图示加密过程是:用文件流方式加密文件,对整个文件数据读取。调用DES加密类进行加密,加密结果写入新建的文件miwen.mef中。数据加密完成该软件也有相应的提示入图所示。图6 解密成功图示解密过程是:用文件流方式解密文件,对整个文件数据读取。调用DES解密类进行解密,解密结果写入新建的文件5.txt中。数据解密完成该软件也有相应的提示入图所示。4测试4.1加密方面的测试实验用例1两次密码一致还满足密码长度大于6如password1=2003031306 并且同时password2=2003031306。2两次密码长度不一致,密码长度大于6,如passwor

45、d1=003031306.password2=2003031306。 3长度一致内容不一致,密码长度一致大于6 ,password1=2003031306,password2=2004031306。4密码长度未大于6位,长度一致内容一致如password1=cuit, password2=cuit。5未选取待加密文件路径文件名 encode_address = “”。6未选取加密文件保存路径文件名save_address = “”。4.2解密方面的测试实验用例1未选择加密文件的路径和文件名encode_address =“”。2未选择输出文件名和路径 save_address =“”。3密码不

46、正确 如原密码为2003031306,解密密码错写为203031306。 结 论在本次开发中,我们以C#为开发语言,在.Net环境中开发了一个文档加密器。该软件可以对选择的文档进行加密和解密,可以设置加密密码。对用户在日常工作中保证文档数据安全具有一定的实用价值。但由于时间比较紧张,加上自己本身在语言编程方面的能力比较有限,该软件还存在着一定的问题。如该软件只能对单机用户加密,没有涉及网络加密范畴。希望可以通过以后的学习能够不断的完善和强大本系统的功能。尽管如此,通过对这个软件的设计,我还是学习到很多的东西,这对于我本人来说,是一个相当大的进步。参考文献1 曹瑞宁.C#编程入门与提高M.上海:上海科学普及出版社,20042 戴芳胜,郭文夷.Visual C#.NET可视化程序设计M.上海:华东理工大学出版社,20043 Simon Robinson ,Christian Nagel 李敏波译.C#高级编程(第3版)M.北京:清华大学出版社,20054 冯登国.密码分析学M.北京:清华大学出版社,20005 杨义先等.现代密码新理论M.北京:科学出版社,20026 蔡乐才,张仕斌.应用密码学M.中国电力出版社,20057 杨波.现代密码学M.北京:清华大学出版社,2003

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号