为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 基于文本的文件加密系统

基于文本的文件加密系统

2018-03-17 38页 doc 174KB 19阅读

用户头像

is_337177

暂无简介

举报
基于文本的文件加密系统基于文本的文件加密系统 摘 要 RSA密码算法体制,它是一种公开密钥算法。其加密密钥和算法本身都可以公开,解密密钥则归用户私人拥有。RSA就因为安全强度高、使用方便等卓越性能受到关注,并得到广泛应用。目前,许多密码系统中都嵌有RSA密码算法。 本文提出了文件加密解密技术对系统安全的重要性,并且介绍了RSA算法体制在本文中的应用。 本文论述了加密解密技术的当前现状及发展趋势,文章从多角度分析密码学的重要性,并引出本课题RSA算法的意义,介绍了RSA对文本文件加密的设计思想及JSP技术在本系统中的应用。更加详细分析了RSA...
基于文本的文件加密系统
基于文本的文件加密系统 摘 要 RSA密码算法体制,它是一种公开密钥算法。其加密密钥和算法本身都可以公开,解密密钥则归用户私人拥有。RSA就因为安全强度高、使用方便等卓越性能受到关注,并得到广泛应用。目前,许多密码系统中都嵌有RSA密码算法。 本文提出了文件加密解密技术对系统安全的重要性,并且介绍了RSA算法体制在本文中的应用。 本文论述了加密解密技术的当前现状及发展趋势,文章从多角度分析密码学的重要性,并引出本课题RSA算法的意义,介绍了RSA对文本文件加密的设计思想及JSP技术在本系统中的应用。更加详细分析了RSA算法的体制结构,密码学中的基本概念,数学在RSA加密解密过程中的应用,举例分析了RSA算法的加密解密原理。接着将结合图形界面介绍本系统的加密解密操作过程及使用方法,集中介绍了开发本系统过程中用到的主要关键技术,并且介绍了系统的实施部署,总结了系统当前存在的问题以及解决。 关键词 密码学,RSA,加密,解密,文本文件 Abstract Abstract RSA cipher system, it is a public key algorithm. Its encryption keys and algorithms themselves can be open, decryption key to the user is privately owned. RSA Security because of high strength, ease of use, such as superior performance by the attention and is widely used. At present, many password systems are embedded RSA cipher. In this paper, document encryption and decryption technology on the importance of system security, and on the RSA algorithm in the system of this paper. This article discusses the encryption and decryption technology of the current status quo and development trend, the article from the perspective of cryptography and more the importance of this issue and raises the significance of RSA algorithm, on the RSA encryption to the text of the document design and JSP technology in this system Applications. A more detailed analysis of the RSA algorithm institutional structures, cryptography in the basic concepts of mathematics in the RSA encryption and decryption process of the application, for example analysis of the RSA algorithm for encryption and decryption of principle. Then, with a graphical interface on the system of encryption and decryption operations and the use of methods, focus on the development of the system used in the course of the key technologies, and on the implementation of the deployment of the system, summed up the current system the problems and solutions . Key words cryptography, RSA, encryption and decryption, a text file 目 录 目 录 摘 要 .......................................................................................................................................... I Abstract .......................................................................................................................................... II 第1章 前 言 ........................................................................................................................... 2 1.1 国内外现状及发展趋势 .................................................................................................. 2 1.2 本课题的意义 .................................................................................................................. 3 1.3 设计思想及相关技术介绍 .............................................................................................. 4 1.3.1 文本文件加密设计思想 ....................................................................................... 4 1.3.2 JAVA及JSP技术简介.......................................................................................... 4 第2章 RSA算法分析 .................................................................................................................. 5 2.1 密码学中的基本概念 ...................................................................................................... 6 2.1.1 明文(plaintext) ................................................................................................. 5 2.1.2 两种基于密钥的算法体制 ................................................................................... 6 2.2 数学在RSA加密解密过程中的应用分析 .................................................................... 7 2.3 RSA算法原理及工作过程 .............................................................................................. 8 2.4 RSA算法分析 .................................................................................................................. 9 2.5 RSA算法安全性要求 .................................................................................................... 10 2.6 RSA公钥密码体制的作用 ............................................................................................ 11 第3章 系统设计 ......................................................................................................................... 13 3.1 系统总体结构设计 ........................................................................................................ 13 3.2 RSA算法体制 ................................................................................................................ 14 3.3 RSA加密算法设计 ........................................................................................................ 15 3.4 RSA解密算法设计 ........................................................................................................ 15 第4章 系统功能实现 ................................................................................................................. 16 4.1主界面产生 ..................................................................................................................... 17 4.2 RSA密钥生成方法 ........................................................................................................ 17 4.3 加密过程 ........................................................................................................................ 20 4.4 解密过程 ........................................................................................................................ 18 第5章 系统的关键技术 ............................................................................................................. 24 5.1 密钥生成的方法 ............................................................................................................ 26 目 录 5.2 加密方法 ........................................................................................................................ 28 5.3 解密方法 ........................................................................................................................ 30 5.4 系统测试 ........................................................................................................................ 31 5.5 系统维护 ........................................................................................................................ 32 结 论 ....................................................................................................................................... 33 参考文献 ....................................................................................................................................... 34 第,章 前 言 第1章 前 言 1.1 国内外现状及发展趋势 随着计算机网络的技术和电子商务的迅速发展,信息安全已经成为当今社会普遍关注的焦点,各种新闻媒体上不时有某国政府重要网站被攻击、软件出现安全漏洞或者黑客发现操作系统安全漏洞等新闻报道。密码技术已经成为衡量一个国家信息技术发展水平的重要标志,其发展的程度将直接影响国家的安全。 近30年来,计算机技术及相关学科、理论的发展,使人们在利用法律保护的同时,能够利用计算机本身在技术上开展安全及保密的研究并逐步加以实现。计算机安全及信息保密的研究具体包括信息加密的算法、体制、协议及相关技术、操作系统的安全、数据库安全、计算机网络安全及计算机病毒的防治等几方面问题的研究。因此保密技术是未来的发展方向。 现代密码技术的跨时代突破,是威特菲尔德?迪菲(Whitfield Diffie)和马丁?海尔曼(Martin Hellman)有关公开密钥加密系统的构想,这是在1976年发的。但威特菲尔德?迪菲和马丁?海尔曼提供的MH背包算法于1984年被破译,因而失去了实际意义。真正有生命力的公开密钥加密系统算法是由隆?里维斯特(Ronald L. Rivest)、阿迪?沙米尔(Adi Shamir)和雷奥纳德?阿德尔曼(Leonard M.Adlemen)在威特菲尔德?迪菲和马丁?海尔曼的的启发下,在1977年发明的,这就是沿用至今的RSA算法。它是第一个既能用于数据加密也能用于数字签名的算法。 由于与计算机技术的结合,密码学的理论研究与实际应用得到了飞速的发展,随之产生了很多新的分支理论,如微粒照片,数字图片水印技术和其他很多隐藏被传递和存储的信息的方法。其中,最常见的就是利用计算机将明文和密码变成密文和将密码和密文变成明文。 随着计算机联网的逐步实现,计算机信息的保密问题显得越来越重要。数据保密变换,或密码技术是对计算机信息进行保护的最实用和最可靠的方法。密码技术以非常简单却具有革命性的数学思想为基础诸如字母表中的字母这样的数据能够作为数字进行处理。例如,根据在字母表中的顺序,使用从 1到26的数字来替换每个字母,并且这些数字能够进行数学计算。数学计算的目的是把信息弄乱,变成毫无意义,使截获该信息的对手无法弄清楚。然而,信息的合法接受方知道如何撤销这些数学计算,从而恢复原始信息。 第,章 前 言 密码技术的未来趋势可以看出尽管非对称密码体制比对称密码体制更为可靠,但由于计算过于复杂,对称密码体制在进行大信息量通信时,加密速率仅为对称体制的1/100,甚至是1/1000。正是由于不同体制的加密算法各有所长,所以在今后相当长的一段时期内,各类加密体制将会共同发展。而在由IBM等公司于1996 年联合推出的用于(电子商务的协议标准SET SecureElectronicTransac2)中和1992 年由多国联合开发的PGP技术中,均采用了包含单钥密码、双钥密码、单向杂凑算法和随机数生成算法在内的混合密码系统的动向来看,这似乎从一个侧面展示了今后密码技术应用的未来。在单钥密码领域,一次一密被认为是最为可靠的机制,但是由于流密码体制中的密钥流生成器在算法上未能突破有限循环,故一直未被广泛应用。如果找到一个在算法上接近无限循环的密钥流生成器,该体制将会有一个质的飞跃。近年来,混沌学理论的研究给在这一方向产生突破带来了曙光。此外,充满生气的量子密码被认为是一个潜在的发展方向,因为它是基于光学和量子力学理论的。该理论对于在光纤通信中加强信息安全、对付拥有量子计算能力的破译无疑是一种理想的解决方法。由于电子商务等民用系统的应用需求,认证加密算法也将有较大发展。此外,在传统密码体制中,还将会产生类似于IDEA这样的新成员,新成员的一个主要特征就是在算法上有创新和突破,而不仅仅是对传统算法进行修正或改进。密码学是一个正在不断发展的年轻学科,任何未被认识的加密解密机制都有可能在其中占有一席之地。 1.2 本课题的意义 文本文件为家用电脑及公司电脑中最为常见的一种文件形式,也是最常用的一种文件类型,文本文件如果不对其进行加密操作,则对大家来说是没有任何秘密可言的,只要能进入电脑系统就可以肆无忌待的查看所有文本文件,这样对大家的隐私及公司资料造成了极大的威胁,所以本文将利用RSA加密算法设计一个针对于文本文件的加密解密程序。 目前,各企业都拥有自己的品牌或各自的业务范围,都利用信息化手段进行高效管理。随着计算机、互联网的广泛应用,信息的交流和共享已经成为各企业自身发展必要的手段。企业内部竞争性情报信息也就自然成为广受关注、为企业所青睐的重要活动,成为企业进行无形资产管理的重要部分。如何保护企业自身重要情报不被竞争对手窃取,使企业在使用网络来提高工作效率的同时避免企业重要的知识产权遭受侵害,将是文件加密管理的一个重要课题,也是本课题研究的意义所在。本课题的旨意在于设计一加密系统,对文件进行加密,达到最终的信息保密的目的。 第,章 前 言 1.3 设计思想及相关技术介绍 1.3.1 文本文件加密设计思想 文本文件加密解密系统采用RSA算法体制进行设计,程序采用JAVA和JSP技术进行开发,为了使本系统更具有扩展性和通用性,系统采用RSA非对称密码技术,非对称型加密非常适合多个客户端和服务器之间的秘密通讯,客户端使用同一个公钥将明文加密,而这个公钥不能逆向的解密,密文发送到服务器后有服务器端用私钥解密,这样就做到了明文的加密传送。非对称型加密也有它先天的缺点,加密、解密速度慢制约了它的发挥,如果有大量的文字需要加密传送,通过非对称型加密来把对称型“密钥”分发到客户端,及时更新对称型“密钥”。 1.3.2 JAVA及JSP技术简介 JSP(JavaServerPages)是由SunMicrosystems公司倡导、多家公司参与建立的一种动态网页技术标准。它是以成熟的、强大的、易扩充的Java语言为脚本的。Java语言其设计目的是使构造基于Web的应用程序更加容易和快捷。由于JSP实现了Web动态内容与显示的分离,脱离了硬件平台的束缚,并且编译后大大提高了运行速度。因此,JSP正逐渐成为因特网上的主流开发工具。JSP的主要优点在于: (1)将内容的生成和显示进行分离; (2)跨平台的可重用性; (3)JSP标签具有扩充性。 当今社会,信息技术飞速发展,人们越来越依靠现代网络技术来实现各种价值,自己的个人网站,组建企业的门户网站,进行网上营销、交流和宣传。JSP 技术是企业应用编程中的一部分,它基于强大的Java 语言具有良好的伸缩性,与Java Enterprise API紧密地集成在一起,在开发电子商务方面具有得天独厚的优势,基于Java 平台构建电子商务平台已经成为当今IT 领域新时尚。为了提高电子商务系统的适用性,避免企业信息化建设的重复投资,电子商务系统往往要求跨平台可用。这里所说的跨平台是个宽泛的概念,它不仅包括跨不同硬件和跨不同操作系统,而且还包括了跨不同产商的数据库和跨不同的底层开发平台等。目前实现这一目标的首选应是当前流行的Java技术,但由一般Java所实现的Applet或Application还不能完全满足电子商务的要求,因此企业级的Java技术——JSP、Sevelet、JavaBeans、EJB、JTC和JDBC等技术就应运而生了。在目前众多的电子 第,章 前 言 商务解决方案中,集成了上述关键技术,由SUN公司推出的J2EE框架便是其中优秀的代表。 文本文件加密解密系统采用JSP技术主要考虑到JSP技术的几个主要特点: (1)一次编写,处处运行 JSP技术是完全与平台无关的设计,包含它的动态网页与底层的服务组件设计。可以在任何平台下编写JSP网页并且在任何支持JSP的系统上执行。也可建立自己的组件,并在JSP中使用。目前主要是JavaBeans和Java Servlet,而它们都是跨平台的。 (2)加强组件能力 JSP技术以Java的组件模型JavaBeans加强了组件的使用能力。这不但省去了开发时间,而且还可以将网页页面设计和商业逻辑分开,有助于快速开发和简单维护。 (3)JSP高度整和了Java企业平台部分。可以利用Java的企业级API开发企业的各种需求系统,而使用JSP作为这些技术的前端。当需要升级应用程序时,只需升级组件与动态页面部分,而这些都存在于服务器上,所以修改服务器上的资源,所有客户端的显示都会跟着改变。 (4)更容易建立动态页面 JSP是标准HTML语法混合自身语法标记,如此简单,不需要有使用Java、C++等程序设计语言的能力与经验。可以这么说,它的出现正是要实现简单容易开发页面的需要,否则它与Java Servlet相比没有任何存在的理由。 第2章 RSA算法分析 最早、最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute,ANSI)承认。DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的"每轮"密钥值由56位的完整密钥得出来。DES用软件进行解码需用很长时间,而用硬件解码速度非常快。幸运的是,当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能 第,章 RSA算法分析 建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。当时 DES被认为是一种十分强大的加密方法。 另一种非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大数不可能被质因数分解假设的公钥体系。简单地说就是找两个很大的质数。一个对外公开的为“公钥”(Public key),另一个不告诉任何人,称为“私钥”(Private key)。这两个密钥是互补的,也就是说用公钥加密的密文可以用私钥解密,反过来也一样。 2.1 密码学中的基本概念 2.1.1 明文(plaintext) 明文(plaintext):也可以说是消息(message),它可能是位序列、文本文件、位图、数字化的语音序列或数字化的视频图像等。明文可以被传送或者存储,明文均指待加密信息。明文用m或者p表示,本文中的明文均用m表示。 密文(ciphertext):就是加密后的消息。密文用c表示,有时和m一样大,有时稍大(除非通过压缩和加密的结合,否则仅有加密,c通常不可能比m小),本文中的密文均用c表示。 密码算法(algorithm):使用于加密和解密的数学函数,通常有两个相关函数,一个函数为加密,另一个为解密。 加密(encryption):用某种方法伪装信息以隐藏它的内容的过程。加密函数E()作用于明文m得到密文c,用数学公式表示为 c=E(m) 解密(decryption):把密文转变为明文的过程。解密函数D()作用于密文c产生明文m,用数学公式表示为 m=D(c) 密钥(key):包括加密密钥Kc和解密密钥Kd,各是一组数据串。当密钥Kc和解密密钥Kd相同时,用K统一表示密钥。加密密钥Kc确定某一加密算法E(),对明文加密,得到密文c;解密时,必须通过有解密密钥Kd确定的解密算法D(),结合解密密钥Kd 第,章 RSA算法分析 才可以解密密文c,得到明文m。有了密钥K的概念,一个密码体制的安全就由基于算法的安全性转为基于密钥的安全性,意味着算法可以公开——这是现代密码体制的基本要求。 一个密码系统(Cryptosystem)由算法以及所有可能的明文m、密文c和密钥k组成。 2.1.2 两种基于密钥的算法体制 1、对称算法体制 在对称算法体制中,对信息的加密和解密都使用相同的密钥,也就是说一把钥匙开一把锁。这种加密方法可简化加密处理过程,信息交换双方都不必彼此研究和交换专用的加密算法。如果在交换阶段私有密钥未曾泄露,那么机密性和报文完整性就可以得以保证。对称加密技术也存在一些不足,如果交换一方有N个交换对象,那么他就要维护N个私有密钥,对称加密存在的另一个问题是双方共享一把私有密钥,交换双方的任何信息都是通过这把密钥加密后传送给对方的。对称算法的加密和解密可以表示为: c=EK(m) m=DK(c) 对称算法又可以分为两类,一次只对明文的单个位(有时是字节)运算的称为序列密码(stream cipher),一次对明文的一组位(称为一组,block)进行运算的则称为分组密码(block cipher)。 2、非对称算法体制 非对称算法,习惯称为公开密钥算法(public-key algorithm)。在这种密码系统中,密钥被分解为一对(即公开密钥和私有密钥)。这对密钥中任何一把都可以作为公开密钥(加密密钥Kc)通过非保密方式向他人公开,而另一把作为私有密钥(解密密钥Kd)加以保存。公开密钥用于加密,私有密钥用于解密,私有密钥只能有生成密钥的交换方掌握,公开密钥可广泛公布,但它只对应于生成密钥的交换方。非对称加密方式可以使通信双方无须事先交换密钥就可以建立安全通信,广泛应用于身份认证、数字签名等信息交换领域。非对称加密体系一般是建立在某些已知的数学难题之上,是计算机复杂性理论发展的必然结果。最具有代表性是RSA公钥密码体制。RSA算法是Rivest、Shamir和Adleman于1977年提出的第一个完善的公钥密码体制,能够被应用在加密和数字签名中,其安全性是基于分解大整数的困难性。 第,章 RSA算法分析 设公开密钥密码系统中两用户A和B,有A的公钥确定的加密算法为EA(),私钥确定得解密算法为DA();同理定义EB()和DB()。A、B的公钥和加密算法都是公开的。 加解密过程如下所述:如果A向B传送信息m,A首先查得B的公钥,得到加密算法EB(),然后加密信息m,得到密文c,如下式公式所示: c=EB(m) 接收端,只有用户B用自己的私钥才可以解密c,得到明文m,如下式公式所示: m=DB(c) 这样,一个加解密过程结束。 若A向B传送信息m,B想确认收到的信息是否为A发送的,则A必须附上自己的签名。签名验证过程如下:首先,A用自己的私钥对信息m加密,得到密文C,并附上1自己签名。然后用B的公钥对这两部分加密,得到密文c,如下式所示: C=EA(m) 1 c=EB((“A”,C)) 1 将c传送给B。接收端,B用自己的私钥对密文c解密,得到A的签名及A的私钥加密后的密文c1。最后,用A的公钥解密c1,即得到明文m,同时也可以证明该信息是A发出的,如下式所示: (“A”,C),DB(c) 1 m=EA(C) 1 2.2 数学在RSA加密解密过程中的应用分析 加密解密算法是一个很复杂的数学运算过程,下面介绍一下RSA算法中所能用到的数学知识。 1、单向函数 【严格单向函数】 一个单射函数f:X?Y称为严格单向函数,如果下述条件成立: (1) 存在一个有效的方法,对所有x?X,计算y=f(x)是容易的,y?Y; (2) 方程y=f(x)在X中有解,但有y=f(x)计算x是困难的。 【陷门单向函数】一个单射函数f:X?Y称为陷门单向函数,如果下述条件成立: (1)存在一个有效的方法,对所有x?X,计算y=f(x)是容易的,y?Y; (2)方程y=f(x)在X中有解。同时存在额外的秘密信息,即陷门。当陷门未知时, 有y=f(x)计算x是困难的;当陷门已知时,有y=f(x)计算x是容易的。 第,章 RSA算法分析 2、欧拉定理及相关概念 RSA的理论基础是数论中的欧拉定理。 定理1(欧拉定理)若整数a,m互素,即gcd(a,m)=1,aΦ(m),1(mod m)。 其中Ф(m)是比m小但与m互素的正整数个数。特别当p为素数时,对任意的a有 ap?a(mod p)。 定理 2 若m?1,gcd(a,m)=1,则存在c使得ca,1(mod m)。把c称为是a的模m 的逆,记作a–1(mod m)或a–1。 定理 3 若a,(b mod m1), a,(b mod m2),…, a,(b mod mk),则a,b( mod (m1 m2... mk))。 定理 4(中国剩余定理)设m1,m2,...,mk是两两互素的正整数,则x,bi(mod mi) (i=1,2,…,k)模(m1 m2... mk)有唯一解。 2.3 RSA算法原理及工作过程 一般地,可将RSA密码算法分成三个主要函数,即大素数的产生、密钥对的产生和 RSA消息处理。 (1)大素数的产生 即产生两个大素数p、q,大素数的产生是RSA算法体制中一个重要算法,也是非常重要的基础。 (2)密钥对的产生 就是加密指数e和解密指数d的产生,二者满足 ed,1 (mod Ф(n)) 其中,ed表示两个指数之积 密钥对的产生是RSA的关键,只有合适的密钥对,才能保证RSA的安全。 (3)消息处理 这是RSA的核心,消息处理包括加密、解密、签名和验证四种,但实质上它们是相通的,处理过程也类似。这里以对信息m的加解密为例,处理过程描述如下。 将m划分成若干个数据块m, m材料
也就越多,从某种意义上来讲也就越不安全了。 因此,一般强调仅将一个对话密钥用于一条信息中或一次对话中,或者建立一种按时更换密钥的机制以减小密钥暴露的可能性。 2、不同用户不可共享模n。 这是因为假定用户B与B共享模数为n,他们的加密密钥分别是e与e,且(e,12121e)=1,某用户对同一消息m分别以e与e加密得到密文c= mod n与c= mod n。攻击21212者截获密文c与c后,由于(e,e)=1,攻击者首先能够(使用扩展欧几里德算法)计1212 e1re2srs算得到r与s满足r*e+s*e=1,然后,攻击者将计算c cmod n = (m)(m)mod n= 1212 re1+se2mmod n=m。这表明,攻击者对密码系统进行攻击是可能的。 3、不同用户选用的素数p或q不能相同。 若用户B与B选用了同一个素数p,设n=pq与n=pq分别是他们的模数,那么任121122 何人都可以用欧几里得算法求得(n,n)=p(即n与n的最大公因子是p),从而得到1212 n与n的分解式。 12 2.6 RSA公钥密码体制的作用 1、为数据安全保密技术提供一个基础算法 在数据安全技术中(如网络安全、操作系统安全、数据库安全、计算机病毒防范等)的许多安全机制都依赖一个强有力的密码算法作为基础算法。RSA公开密钥密码算法可以满足一般的要求。 2、数字签名 由于在磁介质上修改信息是不会留下任何痕迹的,所以对电子信息的签名一直是一个令人感到棘手的问题。利用RSA算法的非对称性,可以方便的对电子信息进行签名。这种签名即无法更改也无法伪造。 第,章 RSA算法分析 3、密钥分配管理 在保密通信时,如何使通信的双方持有相同的密钥,传统的方法是采用人工预分配的方法,这种方法效率低且更换密钥非常麻烦。采用RSA公开密钥密码体制来为通信双方分配密钥,可以大大简化密钥分配的工作。 4、安全通信协议的设计 有了强有力的密码算法,并不一定就能保证通信的安全。攻击者往往可以利用通信协议的漏洞来获得敏感信息,因此我们还应有安全的通信协议。可以用RSA公开密钥密码体制来设计安全的通信协议。 5、为设计未来的新算法提供工具 目前出现的许多新的密码体制(如基于椭圆曲线的密码制,零知识证明等)都与在RSA中使用的大数计算技术有关,RSA设计中的技术可以为实现这些体制提供有力工具。 第3章 系统设计 第3章 系统设计 系统设计的目标是将系统分析阶段所提出的反映了用户信息需求的系统逻辑方案转换成可以实施的基于计算机和通信系统的物理方案。这一阶段的主要任务是从管理信息系统的总体目标出发,根据系统分析阶段对系统的逻辑功能的要求,并考虑到经济、技术和运行环境等方面的条件,确定系统的总体结构和系统各组成部分的技术方案,由总体结构设计和详细设计两部分组成。总体结构设计包括划分子系统、设计模块结构图等方面的设计;详细设计是在总体设计基础上,确定每个模块内部的详细执行过程,包括代码设计、数据库设计、输出设计、输入设计、软硬件方案设计及人机对话设计等。 3.1 系统总体结构设计 结构化是系统设计的指导思想,结构化系统设计是新系统开发的一个重要内容,是结构化系统分析和结构化程序设计之间的接口过程。结构化系统设计技术是结构化程序设计思想的基础上,发展起来的一种用于复杂系统结构设计的技术,它运用一套标准的设计准则和工具,采用模块的方法,进行新系统控制层次关系和分解设计。 1. 系统功能图 即表示将系统自顶向下进行分解所得到的系统的模块层次结构图,用来描述整个系统的模块结构。根据数据流程图表示的系统逻辑模型分出的各个子系统的处理结构,描述出系统功能图中的各个模块。这种模块化结构图可以提高系统的可修改性和可维护性,也为系统设计工作的有效组织和控制提供了方便条件。本系统功能图,如图3.1所示。 RSA文件加密解密系统 密加核加核 钥载心载心 证加加解解 书密密密密 生文算文算 成 件 法 件 法 第,章 系统设计 图3.1系统功能图 3.2 RSA算法体制 RSA也属于分组加密算法,它使用2个密钥,密钥长度从40 b到2048b可变,加密时把明文分割成长度小于密钥长度的块,RSA算法把每一块明文转化为与密钥长度相同的密文块。密钥越长,加密效果越好,但开销也随之增大,所以要在安全与性能之间折衷考虑,实际应用中一般采用64 b密钥。RSA算法的体制构造是基于数论的欧拉定理,产生公开密钥和秘密密钥的方法如下。 (1)取2个互异的大素数p和q,p和q是保密的。 (2)计算n,pq,φ(n),(p,1)(q,1),其中φ(n)是n的欧拉函数值。 (3) 随机选取整数e,且e与φ(n)互为素数,可以找出另一个值d,满足ed?1(modφ (n))。 (4)(n,e)和(n,d)这两组数即分别为公开密钥和秘密密钥。对于明文M,用公钥(n,e)加密可得到密文C,C,Memod(n);对于密文C,用私钥(n,d)解密可得到明文M, M,Cdmod(n)。 RSA加密解密流程示意图如图3.2: 第,章 系统设计 密文密文明文明文传输加密解密(E)(E)(M)(M) 公开密钥秘密密钥 (PK)(SK) 图3.2 RSA加密解密流程图 3.3 RSA加密算法设计 RSA对文本文件进行加密时首选要考虑的是对文本文件进行分段,RSA的加密过程是按文件的每一段进行加密,最后将加密的文件合并成一个完整的加密文件,系统在加密时要生成加密密钥,在本系统中加密密钥与解密密钥都存储在同一文件中,即公钥与私钥存储在一起。要加密的文本文件则根据此密钥及设定文件块的大小进行反复循环加密过程。加密流程图如图3.3所示。 本系统对文本文件进行分段的主要代码分析: int blockSize = cipher.getBlockSize();//获得加密块大小,如:加密前数据为128个 byte,而key_size=1024加密块大小为127 byte,加密后为128个byte;因此共有2 个加密块,第一个127 byte第二个为1个byte int outputSize = cipher.getOutputSize(data.length);//获得加密块加密后块大小 int leavedSize = data.length % blockSize; int blocksSize = leavedSize != 0 ? data.length / blockSize + 1 : data.length / blockSize; byte[] raw = new byte[outputSize * blocksSize] 加密后读取,分段加密密钥组合 文本文件加密块密文文件段 图3.3RSA加密流程图 3.4 RSA解密算法设计 第,章 系统设计 RSA对本文件进行解密时首选要选择解密密钥,将解密密钥指定给系统后,系统首先要读取RSA加密的文件块大小,读取成功后系统根据解密密钥对加密的文本文件进先反复循环解密过程。解密流程图如图3.4所示。 本系统文本文件文件块读取代码分析: Ciphercipher=Cipher.getInstance("RSA", neworg.bouncycastle.jce.provider.BouncyCastleProvider()); cipher.init(Cipher.DECRYPT_MODE, key); int blockSize = cipher.getBlockSize(); 解密后读取,分段组合解密密钥密文解密块明文 文件段 图3.4RSA解密流程图 第4章 系统功能实现 沈阳工程学院毕业论文 第,章 系统功能实现 4.1主界面产生 根据第3章的文件加密解密算法的分析,RSA文件加密解密系统分为两大主要功能部分,一是RSA算法的加密,二是RSA算法的解密,两个过程都是建立在RSA的核心算法基础上的,首先本系统会自动生成文件加密解密密钥,生成密钥后用户可远程下载密钥文件,通过本系统对文本文件进行加密与解密操作,本系统的主界面如图4.1所示。系统主要分为三个功能区,第一是密钥的生成及下载管理区,这里主要完成的对加密及解密密钥的生成,用户单击“生成密钥”按钮,此时系统会自动生成密钥,下载即可下载此密钥,第二是文件加密区,第三是文件解密区,加密与解密都需要选择相应的密钥。 图,.,系统主界面 4.2 RSA密钥生成方法 沈阳工程学院毕业论文 第,章 系统功能实现 文件文件加密与解密密钥的生成为同一界面如图4.2所示,用户单击“生成密钥”后系统会自动生成密钥文件,在本系统中公钥与私钥都存储在此文件里,密钥文件以RSA_KEY_生成时间.dat为命名。 图4.2创建密钥 4.3 加密过程 文件加密时首先要按4.2步骤先生成密钥文件,并将其下载到本地目录中。如图4.3所示。 图4.3上传密钥文件 文件加密过程分为三个步骤,如图4.4所示,首先要选择密钥文件将其上传到服务器上,其次选择需要加密的文本文件,然后单击“开始加密”对文本文件进行加密操作。 图4.4加密过程 4.4 解密过程 沈阳工程学院毕业论文 第,章 系统功能实现 文件解密过程和加密过程很相似,都需要用户选择相对应的密钥文件。 文件解密过程同样也分为三个步骤如图4.5所示,首先要选择密钥文件将其上传到服务器上,其次选择需要解密的文本文件,然后单击“开始解密”对文本文件进行解密操作。 图4.5解密过程 第5章 系统的关键技术 沈阳工程学院毕业论文 第,章 系统功能实现 5.1 密钥生成的方法 RSA在密钥生成过程中都产生了一个密钥对,一是公钥,二是私钥,在本文中公钥是用来对文本文件加密的,私钥是用来解密的,下面为本系统中公钥及私钥的生成代码: /** * 生成密钥对 * @return boolean * @true 生成成功; false 生成失败。 */ public static boolean saveRSAKey(String keyFileName){ try { //生成密钥对 KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA", new org.bouncycastle.jce.provider.BouncyCastleProvider()); final int KEY_SIZE = 1024;//这个值关系到块加密的大小,可以更改,但是不要太大,否则效率会低 keyPairGen.initialize(KEY_SIZE, new SecureRandom()); KeyPair keyPair = keyPairGen.genKeyPair(); 保存公钥到文件 // FileOutputStream f1=new FileOutputStream(keyFileName); ObjectOutputStream b1=new ObjectOutputStream(f1); b1.writeObject(keyPair); b1.close(); f1.close(); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 生成公钥 * @param modulus 沈阳工程学院毕业论文 第,章 系统功能实现 * @param publicExponent * @return RSAPublicKey * @throws EncryptException */ public static RSAPublicKey generateRSAPublicKey(byte[]modulus,byte[] publicExponent) throws EncryptException { KeyFactory keyFac = null; try { keyFac=KeyFactory.getInstance ("RSA"neworg.bouncycastle.jce.provider.BouncyCastleProvider()); } catch (NoSuchAlgorithmException ex) { throw new EncryptException(ex.getMessage()); } RSAPublicKeySpec pubKeySpec =new RSAPublicKeySpec(new BigInteger (modulus), new BigInteger(publicExponent)); try { return (RSAPublicKey) keyFac.generatePublic(pubKeySpec); } catch (InvalidKeySpecException ex) { throw new EncryptException(ex.getMessage()); } } /** * 生成私钥 * @param modulus * @param privateExponent * @return RSAPrivateKey * @throws EncryptException */ public static RSAPrivateKey generateRSAPrivateKey(byte[]modulus, byte[] privateExponent) throws EncryptException { KeyFactory keyFac = null; try { keyFac=KeyFactory.getInstance("RSA", neworg.bouncycastle.jce.provider.BouncyCastleProvider()); } catch (NoSuchAlgorithmException ex) { throw new EncryptException(ex.getMessage()); } 沈阳工程学院毕业论文 第,章 系统功能实现 RSAPrivateKeySpecpriKeySpec= new RSAPrivateKeySpec(new BigInteger (modulus), new BigInteger(privateExponent)); try { return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec); } catch (InvalidKeySpecException ex) { throw new EncryptException(ex.getMessage()); } }/** * 生成公钥 * @param modulus * @param publicExponent * @return RSAPublicKey * @throws EncryptException */ public static RSAPublicKey generateRSAPublicKey(byte[] modulus, byte[] publicExponent) throws EncryptException { KeyFactory keyFac = null; try { keyFac=KeyFactory.getInstance("RSA", neworg.bouncycastle.jce.provider.BouncyCastleProvider()); NoSuchAlgorithmException ex) { } catch ( throw new EncryptException(ex.getMessage()); } RSAPublicKeySpec pubKeySpec= new RSAPublicKeySpec(new BigInteger (modulus), new BigInteger(publicExponent)); try { return (RSAPublicKey) keyFac.generatePublic(pubKeySpec); } catch (InvalidKeySpecException ex) { throw new EncryptException(ex.getMessage()); } } /** * 生成私钥 * @param modulus * @param privateExponent * @return RSAPrivateKey * @throws EncryptException 沈阳工程学院毕业论文 第,章 系统功能实现 */ public static RSAPrivateKey generateRSAPrivateKey(byte[] modulus, byte[] privateExponent) throws EncryptException { KeyFactory keyFac = null; try { keyFac=KeyFactory.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider()); } catch (NoSuchAlgorithmException ex) { throw new EncryptException(ex.getMessage()); } RSAPrivateKeySpecpriKeySpec= new RSAPrivateKeySpec(new BigInteger (modulus), new BigInteger(privateExponent)); try { return (RSAPrivateKey) keyFac.generatePrivate(priKeySpec); } catch (InvalidKeySpecException ex) { throw new EncryptException(ex.getMessage()); } } 5.2 加密方法 系统加密时要对选择的文件进行分块,如:加密前数据为128个byte,而key_size=1024 加密块大小为127 byte,加密后为128个byte;因此共有2个加密块,第一个127 byte第二个为1个byte,下面为本系统中文件加密主要算法: /** * 加密 * @param key 加密的密钥 * @param data 待加密的明文数据 * @return 加密后的数据 * @throws EncryptException */ public static byte[] encrypt(Key key, byte[] data) throws EncryptException { try { Ciphercipher=Cipher.getInstance("RSA",new 沈阳工程学院毕业论文 第,章 系统功能实现 org.bouncycastle.jce.provider.BouncyCastleProvider()); cipher.init(Cipher.ENCRYPT_MODE, key); int blockSize = cipher.getBlockSize();/ int outputSize = cipher.getOutputSize(data.length);//获得加密块加密后块大小 int leavedSize = data.length % blockSize; int blocksSize = leavedSize != 0 ? data.length / blockSize + 1 : data.length / blockSize; byte[] raw = new byte[outputSize * blocksSize]; int i = 0; while (data.length - i * blockSize > 0) { if (data.length - i * blockSize > blockSize) cipher.doFinal(data, i * blockSize, blockSize, raw, i * outputSize); else cipher.doFinal(data, i * blockSize, data.length - i * blockSize, raw, i * outputSize); i++; } return raw; } catch (Exception e) { throw new EncryptException(e.getMessage()); } } 这里面doUpdate方法不可用,查看源代码后发现每次doUpdate后并没有什么实际动作除了把byte[ ]放到ByteArrayOutputStream中,而最后doFinal的时候才将所有的byte[ ]进行加密,可是到了此时加密块大小很可能已经超出了OutputSize所以只好用dofinal方法。 5.3 解密方法 系统解密与加密过程相似,都城要对文件进行分块,然后根据密钥文件循环对文本文件进行解密操作,下面为本系统中文件解密主要算法: 沈阳工程学院毕业论文 第,章 系统功能实现 /** * 解密 * @param key 解密的密钥 * @param raw 已经加密的数据 * @return 解密后的明文 * @throws EncryptException */ public static byte[] decrypt(Key key, byte[] raw) throws EncryptException { try { Ciphercipher=Cipher.getInstance("RSA",new org.bouncycastle.jce.provider.BouncyCastleProvider()); cipher.init(Cipher.DECRYPT_MODE, key); int blockSize = cipher.getBlockSize(); ByteArrayOutputStream bout = new ByteArrayOutputStream(64); int j = 0; raw.length - j * blockSize > 0) { while ( bout.write(cipher.doFinal(raw, j * blockSize, blockSize)); j++; } return bout.toByteArray(); } catch (Exception e) { throw new EncryptException(e.getMessage()); } } 5.4 系统测试 在测试过程中发现了许多问题,经过修改使其逐渐完善,当然还有很多隐藏的问题, 由于某些原因没有暴露出来。总而言之,该系统有一定的错误校验能力,可以运行。 下面介绍一下本系统所使用的测试文件用例。 加密前文件部分内容如图5.1所示。 沈阳工程学院毕业论文 第,章 系统功能实现 图5.1加密前文档 加密后文件部分内容如图5.2所示。 图5.2加密后文档 系统经过测试,文本文件通过此系统加密后能够正常解密还原文件。 5.5 系统维护 沈阳工程学院毕业论文 第,章 系统功能实现 系统投入运行后,需不断地对系统进行各项修改和维护,以改正潜在错误,扩充功能,完善功能,延长系统寿命,即进行系统维护。系统维护包括系统应用程序维护、数据文件维护、代码维护以及硬件维护。 代码维护是针对系统应用范围的扩大、应用环境的变化,而产生的对代码的订正、添加、删除、重新设计等需要的工作。可充分考虑代码设计时的可扩充性,以适应发展需要。 系统应用程序维护是在系统运行使用后,为了改正错误或满足新的需要而修改系统的过程。对于本系统来说可定期请专门系统设计人员对系统运行中发现的错误及系统的改进需求进行改善调整。 结 论 本论文的研究对象是RSA密码算法体制,研究其原理及相关算法,并实现之。 RSA是目前最为流行、应用最广泛的公开密钥算法,许多密码系统中都嵌有它。所以通过本次设计使我对RSA技术得到了充分的学习和了解,经过了三个月的系统努力开发与精心调试,现RSA文本文件加密解密系统已经能够稳定的运行,但在文系统中仍然存在不足之处,公钥与私钥放在同一文件里会使系统的安全性大大降低了,而且本系统只能针对文本文件进行加密,这些都需要改进的地方。 结 论 随着技术的发展与知识的不断积累,加密技术也会在原有几种技术的基础上不断的完善,更加安全的保护文件。 此次系统开发从最开始的选题到最后论文完稿、程序打包是一生中最宝贵的财富。开发过程中遇到过很多困难,但是能够沉着冷静、查阅资料,另外导师的帮助,不仅在理论上提升了自己的水平,同时增加了实践软件开发经验,将永远珍惜毕业设计对我的锤炼,带着它走向我的工作岗位。 参考文献 [1]杨义先,林须端著.编码密码学.人民邮电出版社.1992 [2]冯登国著.密码分析学.清华大学出版社.2000 [3]刘玉琏,傅沛仁著.数学分析讲义(下册).高等教育出版社.2001 [4]闵嗣鹤,严士健著.初等数论.高等教育出版社.1982 [5](美)Bruce Schneier著,吴世忠,祝世雄,张文政等译.应用密码学.机械工业出版社.2000 [6](芬兰)Arto Salomaa著,于存生,单炜娟译.公钥密码学.国防工业出版社.1998 参考文献 [7]卢开澄著.计算机密码学(第3版).清华大学出版社.2003 [8]王衍波,薛通著.应用密码学.机械工业出版社.2003 [9]黄敬仁著.系统分析.清华大学出版社.2002 [10]池雅庆著.jsp项目开发与实践.中国铁道出版社.2006 [11]耿祥义,张跃平.JSP实用教程[M].清华大学出版社, 2003 [12] Kevin Fall,Kannan Varadhan.The ns manual.The VINT Project.,February,2001 [13] Josh B,David A M,David B J.A performance comparison of multi-hop wireless Ad hoc network routing protocols.MobiCom98,Dallas,USA,October 1998 [14] David B.Johnson,Davis A.Maltz.Dynamic Source Routing in Ad Hoc Networks.Mobile Computing,1996,pp.152~81 [15] Charles E.Perkins,Elizabeth M.Royer,Samir R.Das.Ad Hoc On-demand Distance Vector Routing,,October 99 [16] A.Iwata,et al.Scalable Routing Strategies for Ad Hoc Wireless Networks.IEEE Journal on Selected Areas in Communications,Special Issue on Ad-hoc Networks,Aug 1999:1466~1487
/
本文档为【基于文本的文件加密系统】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索