数据加密方法的研究与实现.doc_第1页
数据加密方法的研究与实现.doc_第2页
数据加密方法的研究与实现.doc_第3页
数据加密方法的研究与实现.doc_第4页
数据加密方法的研究与实现.doc_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1 绪论从第一台计算机诞生起,经过几十年的高速发展,信息技术已经进入到我们的生活的方方面面,不断改变着我们的生活。我们已经进入了信息化时代。信息化时代是一个信息爆炸的时代,大量的信息依靠传统的方式难以实现有效的储存和传输,因而以计算机技术和网络技术为基础的信息技术的发展显得尤为重要。1.1 密码技术的研究意义在中国,网民的人数已经达到了3亿。每天人们都要通过计算机和网络进行生活、工作、学习、娱乐等活动。这些活动都需要依靠信息在网络中的传输来完成。其中包括了一些十分敏感的个人信息,如银行卡账户信息,公民个人身份信息等。这些信息都是和人民的切身利益紧密相关。如果信息被盗,那将会为人民带来巨大的损失。近年来,以淘宝,阿里巴巴等为代表的电子商务蓬勃发展。2008年,中国的电子商务交易总额已经突破了3万亿人民币大关,达到了GDP总量的10%,年增长率也达到了50%1。电子商务已经成为我国经济发展的强大的助推力。不仅仅是电子商务,其他计算机和网络相关的信息产业在中国也得到了大力的发展。它们所创造的经济效益也在逐年快速增长,已经成为中国经济发展不可或缺的部分和强大动力。电子政务也是近年来的信息化建设的重点。电子政务是指政府机构运用现代化的网络通讯技术和计算机技术,把政府管理和服务职能通过简单、优化、整合、重组后到网上实现,打破时间、空间以及条块的制约,为社会公众以及自身提供一体化的高效、优质廉洁的管理和服务2。它不仅能提高政府的工作效率和工作透明度,也使人民群众更好的实行监督的权利。因此,电子政务的建设受到了政府的极大的关注和投入。政府部门经常通过网络进行传输一些文件资料。有些文件包含了涉及国家安全的机密资料,一旦泄露,将为我国国家安全和社会安定带来巨大威胁。我们需要对这些资料进行保护,保证其安全的传输和储存。办公自动化是现在企业信息化建设的重要步骤。企业把信息资源和重要文件都以电子文档的形式存放在服务器上,以方便各部门、各公司之间的文档调用,这样能很大程度上提高工作效率。目前,各大公司都纷纷建设办公自动化。有许多涉及商业机密的文件也一同被放在服务器上。这些资料也需要严格保护。信息是一种战略资源,在国防军事上,信息安全成为了一个重要的安全防卫领域。密码技术作为信息安全防御中的不可替代的技术,在世界各国,尤其是欧美等国受到极大的重视3。美国在这方面投入了巨大的资源来建立了一只专门的信息安全部队确保其再信息领域的安全。密码技术作为信息安全技术最重要的部分之一,是一种主动的安全防御策略,为信息存储和传输提供保护。同时,密码技术是其他安全技术的基础,比如数字签名和密钥管理等。因此,密码技术受到安全专家的高度关注和重视。现在,各国都在大力开发和改进密码技术,用以应对目前日益严重的信息安全问题,保障社会的快速发展,保护国家安全。1.2 论文的主要工作本次设计通过运用文献分析方法、面向对象程序设计方法来完成预定的目标:(1)加密技术的选择。(2)加密密钥长度的选择。(3)加密功能。(4)解密功能。具体研究方法和技术路线如下:(1)首先要通过文献对加密技术的原理和算法实现进行系统的学习,尤其是对对称加密算法中的DES算法和IDEA算法,非对称加密算法中的RSA算法的深入学习。(2)通过对其他类似的加密软件的功能的观察研究,进而对本软件进行分析:第一,功能分析,即对软件要实现的主要功能进行分析,包括加密算法的选择,密钥的生成,加密与解密的实现等。第二,软件性能分析,即对软件的跨平台运行能力,较高的安全性和高加密效率的实现。第三,根据上述分析,对软件整体的框架进行逻辑设计。第四、评审分析,对整个软件的设计方案再做一次评审,确定其设计合理,功能完备,具有可操作性。(3)通过面向对象程序设计语言来完成软件的实现过程。2 密码技术基本概念为了更好的研究密码技术,首先要阐述一下和密码技术相关的一些基本的概念:2.1 加密原理数据加密的基本思想是通过一些手段对信息进行处理,使处理后的结果与原文截然不同,确保信息只能被授权的用户通过特定手段处理后得知,非授权得到处理后的信息不能够知晓原来信息。明文是原来的信息,这些信息需要进行特定的处理;加密就是信息处理的过程;密文是处理后产生的结果;密码算法就是在信息处理时所规定的特定的规则;加密者是对明文进行加密的个体,接收者是接收加密后的密文并且解密密文的个体;而破译者则是那利用一些密码破解手段对明文进行解密的非授权的个体4。如图一所示: 明文加密算法公开信道解密算法明文密码分析者解密密钥加密密钥MMCC安全信道密钥KKK 图2-1 加密系统图(1)明文空间M,它是指明文。(2)密文空间C,它是指明文。(3)密钥空间K,它是一个密钥对,包括加密密钥K和解密密钥K,既K=。(4)加密算法E,它是对M进行加密变换成C。(5)解密算法D它是对C进行解密变换成M。对于明文M,加密算法E在密钥K的控制下将明文M加密成密文,而解密算法D在密钥K的控制下将密文C解密出同一明文M,即 Ek(m)=c, Dk(c)=m5。对于每一个确定的密钥,加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,且解密变换是加密变换的逆变换6。2.2 密码学的发展历史密码学的发展经历的漫长的时机,最早可以追溯到几千年前。其大致可以分为3个阶段:第1阶段是从几千年前到1949年。这一时期可以看着是科学密码学的前夜7。这时的密码设计和破译还没有具体的理论和规则。多数只能靠密码专家个人的天赋。第2阶段是从1949年到1975年。Shannon在1949年发表的保密系统的信息理论一文,是密码学开始的标志7。这篇文章为对称密钥密码系统的建立提供了理论基础,密码学从此正式成为了一门新的学科。第3阶段是从1976年至今。1976年Diffie和Hellman发表了密码学新方向一文,提出了公钥密码理论。他们首次证明了在发送端和接收端不需要传输密钥的保密通信的可能性,从而开创了公钥密码学的新纪元7。2.3 密码技术的国内外发展状况国际上的密码技术主要分为两类,一类是基于数学的密码理论与技术,比如公钥密码、分组密码、序列密码、PKI技术等。另一类是非数学的密码理论与技术,比如量子密码,基于生物特征的识别理论与技术等8。对称密钥密码和公钥密码相比较各自具有不同的特点。目前,基于数学的密码理论与技术被广泛的运用在各个领域。公钥密码自1979年以来至今,已经有了多种不同的公钥体制诞生。其中主要有两类:一类基于大数因子分解问题,比如经典的公钥密码系统RSA;另一类基于离散对数问题,比如椭圆曲线公钥体制8。由于大数因子分解的能力在不断的发展,使用RSA的安全性也随之受到威胁。人们通过增加密钥的长度以提高大数因子分解的难度来保证提高它的安全性。一般密钥长度为1024比特。公钥密码体制主要用于数字签名和密钥分配,如PKI。PKI如今已经成为公钥密码体制研究的一个热门。序列密码的理论已经很成熟了。它被广泛的运用在政府和军方要害部门的信息安全上8。虽然目前序列密码已经不是一个热点,但是它依旧具有很高的价值。比如R C4被用于存储加密中。1977年制定的分组密码除了公布具体的算法之外,从来不公布详细的设计规则和方法。DES是分组密码系统中的经典代表。分组密码的优点在于它的加密速率快,效率高,被广泛应用在对大文件加密上。非数学的密码理论与技术,如量子密码,基于生物特征的识别理论与技术等,目前也受到密码学家的高度关注,在国际上进行热烈的讨论和研究8。这些密码技术是与其他学科技术结合在一起,大大加强了密码的安全性。国外目前不仅在密码基础理论方面的研究做的很好,而且在实际应用方面也傲的非常好8。欧美等国都制定了一系列规范的密码标准。算法的征集和讨论都已经公开化。我国在这些方面却远未达到。因此,国内的密码技术要想赶上国际上的水平,我们就需要和国际接轨。不仅要学习新的密码技术,也要建立自己的密码体制和创新机制。2.4密码技术的发展方向尽管对称密钥密码和公钥密码进过多年的发展和实践,已经有了十分完整的体系。但是在这信息高速发展的时代,各种威胁对安全构成了严重的挑战,已有的密码技术对这些威胁的抵抗显得有些力不从心,所以我们需要发展新的的密码技术来实现信息安全的保障。由于破解能力的增强,单一密码的安全性变大越来越低,所以,密码专家们把多种密码结合使用,创立出的混合密码体系变为了新的发展方向。由 IBM 等公司于 1996 年联合推出的用于电子商务的协议标准 SET(Secure Electronic Transaction)中和 1992 年由多国联合开发的 PGP 技术中,均采用了包含单钥密码、双钥密码、单向杂凑算法和随机数生成算法在内的混合密码系统9。同时,一些新的密码理论也被提了出来。近年来研究火热的混沌密码学就是其中之一。它综合应用了混沌理论、密码学、通信工程等方面的理论。还有基于一些其他学科发展而发展的新密码技术,有基于物理中的光学和量子理论的量子密码,基于生物特征密码技术,指纹加密、瞳孔加密等的高新密码技术。当然,密码学专家们也没放弃对原有密码体制的继续改进,进而增强它们的安全性。比如增加密钥长度来加强RSA的安全性,增加迭代轮数来加强DES加密的强度等方法。这些新的密码觉有很高的安全性,同时也有很强的灵活性,为信息加密安全将提供了强有力的保障。3 加密算法的分析加密算法主要分为对称密钥密码和公钥密码。在对称密钥密码中,DES加密算法最具有代表性。同为分组加密算法的IDEA加密算法,具有比DES加密算法更强的安全性和加密速度,因此有着广泛的应用。而在公钥密码中,基于大数分解的RSA加密算法是其代表。它们也是加密技术中的基础的技术。学习和掌握它们,对学习其他加密技术将有十分有力的帮助。3.1 DES加密算法3.1.1 DES概述数据加密标准(DES,Data Encrpytion Standard)是一种使用密钥加密的块密码,1976年被美国联邦政府的国家标准局确定为联邦资料处理标准(FIPS),随后在国际上广泛流传开来。它基于使用56位密钥的对称算法。这个算法因为包含一些机密设计元素,相对短的密钥长度以及被怀疑内含美国国家安全局(NSA)的后门而在开始时是有争议的,因此DES因此受到了强烈的学院派式的审查,并以此推动了现代的块密码及其密码分析的发展10。3.1.2 DES加密算法详解DES是混乱和扩散的组合。DES用一个56位的密钥对64位的明文分组进行操作,将其转换成一个64为的密文。它的基本思路是:把明文M通过一个初始置换,转换成M0,并分成左右两个32为长度的部分,即:L0和R0。然后将R0与子密钥K1进行F函数的运算,结果在与L0进行异或。异或后的结果与L0进行左右交换,成为L1和R1。如此进行16次迭代,再经过一个木置换(初始置换的逆置换)得到密文。加密过程:(1)将明文分成多个64bit的组,不足64bit的以适当的形式补足。(2)进行16轮的相同的运算。这些运算被称为函数F。即Li=Ri-1,Ri=Li-1f(Ri-1,Ki)(1i16).Ki为第i轮计算中使用的子密钥。以第一次迭代为例:首先,将64bit大小的分组M分为左右两个大小均为32bit的部分L0,R0。其次,保持L0不变,根据固定替换表E把R0由32位扩展成48位。把扩展后的48位R0与第1次迭代生成的48位加密密钥进行按位异或操作,形成一个新的48位的R。再次,把R视为8个6bit的分组。每个6bit组依次与S盒进行替换运算。第一个比特和最后一个比特组合来确定S盒中的行,中间四位二进制数确定S盒中的列。由行列所对应的数转换为4bit来替换6bit的组,由此将48bit的R转换为32bit。接着将R与固定的置换P来进行置换,得到函数F的结果P(C)。最后,将函数F的结果P(C)与L0进行异或运算,结果为R1。L1的值为R0。DES需要进行16次的迭代,在完成之前,把第i-1次得到的L和R的值作为第i次的输入数据,第i次迭代要选择第i次迭代生成的密钥与数据进行按位异或。DES算法的前15次迭代每完成一次迭代都要交换L和R的值,第16次迭代不交换两者的数值.。(3)应用初始置换IP的逆置换IP-1对L16R16进行置换,得到密文C7。解密过程:对密文C逆序使用密钥方案,输出明文M。每一轮的加密算法过程如下11:图3-1 每一轮DES加密过程3.1.3 DES密钥计算子密钥由初始密钥K计算得出。具体步骤如下7:对于一个给定的初始密钥K,删除其中的8位的校验位,然后进行如下运算:PC-1(K)=C0D0。PC-1是对余下56位的固定置换,并将结果分为28bit的C0,D0两个部分。计算Ci=LSi(Ci-1),Di=LSi(Di-1),Ki=PC-2(CiDi)(1i16)。LSi表示一个位置或者两个位置的向左循环移位,PC-2表示为另外一个固定置换。经过16次迭代过后,生产16个48为的子密钥。3.1.4 DES安全性分析自从DES算法被公诸于世以来,学术界对DES的安全性和破译的方法进行了激烈的争论,其中对密钥长度、迭代次数、S盒的设计是人们所关注的焦点12。由于DES采用的对称加密的体制,这使得加解密双方使用相同或者可以相互推导的密钥,因此密钥的安全分发成为了整个加密体系中一个十分薄弱,且具有巨大风险的环节。再加上DES算法的密钥更新的间隔时间较长,密码攻击者就足够的时间去破解密钥,这也为安全加密安全提供很大的威胁。根据目前的分析,轮数为16轮的DES仍然是安全的。但是如果加密轮数变小,特别是10轮以下,就容易被破解。而达到16轮的DES,破解方式主要是穷举攻击。但是使用穷举攻击想要在短时间内破解,是十分困难的。这种攻击方式需要攻击者使用十分昂贵的高速计算机进行穷举。所以,使用DES算法应该不使用轮数小于16的12。密码专家也尽力扩大在一个迭代密码算法的轮数来改进算法13。在DES中存在4个弱密钥和12个半弱密钥。,密钥初始值被分成了两部分,每一部分可以独立地移动。如果每一部分的所有位都是0或l,那么算法的任意一轮的子密钥都是相同的。所谓“弱密钥”,指的是密钥全是1或0,或者一半是1,一半是0的情况。所谓“半弱密钥”,指的是密钥对里的一个密钥能解密另一个密钥加密的信息。弱密钥和半弱密钥的产生,主要是有DES算法的子密钥产生方式所决定的。在产生子密钥的过程中,人们需要不断检查来避免弱密钥的产生14。密钥长度是安全性的一个重要方面。虽然,在目前的情况下,64位密钥长度DES想要使用穷举方式破解依然具有比较大的难度。然而,随着计算机技术的发展,在未来,速度更快,价格低廉的计算机将会不断面世。这位DES的生存带来挑战。所以,很多专家都建议增加密钥长度,并且做了这方面的改进。3DES就是其中的代表。3DES就是使用2个密钥对明文进行3次的DES加密。得到的密文在目前破解技术下具有极高的安全性。在DES加密算法实现过程中,S盒作为DES算法的核心其中决定性的作用。S盒式整个算法中唯一的非线性部件。一个保密的,设计巧妙的S盒能为DES加密的安全性提供极大的支持。虽然它的设计原理没有被公布,但是有一些设计原则可以提供参考7:所有S盒的每一行是0,1,2,.,15的一个置换。所有S盒的输出都不是输入的线性函数或仿射函数;S盒的输入改变任意一位都会引起输出中至少两位发生变化;对于任何输入x(6位),S(x)与S(x001100)至少有两位不同;对于任何输入x(6位),S(x)与S(x00ef00)不相等,e,f取0或1;3.2 RSA加密算法3.2.1 RSA概述RSA是Rivest、Shamir和Adleman在1977年提出的一种公开密钥密码体制,目前已成为公钥密码的国际标准。RSA的理论基础是数论中的一条重要论断:对一个具有大素数因子的大数进行分解是非常困难的。目前,RSA在世界范围内被广泛地应用于各种产品、平台等软件上15。RSA系统是公钥加密系统中最具代表性也最经典的,大多数目前广泛被使用的公钥加密和数字签名的产品与标准都是使用RSA算法。RSA算法是第一个既用于数据加密也用于数字签名的公钥算法,所以它成为为公用网络上信息提供加密和鉴别一种重要方法。它会产生一对密钥,即公钥和私钥。私钥被用户保存着,不进行对外公开;公钥则向外进行公开,由他人使用。在用RSA加密是,首先他人使用公钥对明文进行加密并且传递给用户,用户得到密文后,使用自己的私钥进行解密,还原出明文信息。为了保证密钥的安全性,RSA密钥要求至少为500位的长度,一般情况下推荐使用1024位长度的密钥。 基于下面的事实,保证了RSA算法的安全性和有效性:(1)已有确定一个数是不是质数的快速算法。(2)尚未找到确定一个合数的质因子的快速算法。目前,由于电子商务和其它因特网的应用需求的日益激增,公钥体系得到极大的发展。其中包括对服务器访问控制和对电子商务交易过程的安全保护,以及权利保护、个人隐私、无线交易和内容完整性(如保证新闻报道或股票行情的真实性)等方面的需求。公钥技术发展趋势就是PKI与操作系统的集成,PKI是“Public Key Infrastructure”的缩写,意为“公钥基础设施”。目前,公钥体制广泛地用于CA认证、数字签名和密钥交换等领域。公钥加密中使用最广的就是RSA算法。RSA算法的一大用处就是解决DES加密算法的密钥管理和分发的问题。由于RSA的算法复杂,因此通常情况下人们不使用RSA加密算法来对大的数据文件进行加密,而使用DES加密。但是,DES系统有一个巨大的风险便是它的密钥分发过程。使用RSA算法来加密DES算法的密钥来进行密钥分发,其结果非常好,成功的解决了这一问题。RSA的另一大用处便是数字签名。数字签名可以很容易的发现密文电文是否被篡改,从而对数据信息的完整性进行验证。3.2.2 RSA算法描述密钥对的产生16:1、随意选择两个大的质数p和q,p不等于q,计算模数N=p*q。2、根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)3、选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)4、用以下这个公式计算d:d* e 1 (mod (p-1)(q-1)5、将p和q的记录销毁。(N,e)是公钥,(N,d)是私钥。加密过程:用下面这个公式他可以将n加密为c16:解密过程:用以下这个公式来将c转换为n16:3.2.3 RSA安全性分析自公钥加密问世以来,密码学家们提出了多种不同的公钥加密方法,它们的安全性都是基于复杂的数学难题之上。对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。如果说一种能快速进行因数分解的方法问世之后,那么RSA的安全性将极度下降。目前,对RSA的破解还十分有难度,比如使用强力破解的方式只对短密钥长度的RSA算法有效,密钥变长后,这种破解方式也就无效了。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。但在分布式计算技术和量子计算机理论日趋成熟的今天,RSA加密安全性受到了挑战16。目前RSA算法的三种可能的攻击的方法是:(1)强行攻击:这包含对所有可能的私有密钥进行逐一尝试,即遍历法进行搜索;(2)数学攻击:对两个素数乘积的因子进行分解;(3)定时攻击:这依赖于解密算法的运行时间17。(1)强行攻击的防范方式对于RSA强行攻击的防范方式其实很简单,那就是增加密钥的长度。随着分解大整数方法的进步、计算机运算速度的提高以及网络的发展,短密钥的破解变得越来越容易,因此,增加密钥长度是提高密钥破解难度,保证RSA的安全性的重要方法。目前,一般认为RSA的密钥需要有1024位以上的长度才能保障安全。但是密钥长度的增加对加密的效率带来了很大的影响。效率地下使的RSA的应用范围受到严重的制约。(2)数学攻击的防范方式对于数学攻击,算法的发明者建议对p和q采用了许多限制17:(1)p和q的长度至少为10140的数量级;(2)(P-1)和(q-1)都应该包含大整数因子;(3)gcd(p-1,q-1)应该小。(3)对于定时攻击的防范方式防范定时攻击的方法其实很简单,以下有三种方法可供参考17:(1)常数取幂时间:保证所有的取幂操作在返回结果之前都花费相同的时间;(2)随机延时:用一个随机的延时来迷惑攻击者,这既保证了安全性,也可以提高性能;(3)盲化:在进行取幂运算之前,用一个随机数与密文进行相乘,防止了攻击者了解正在处理的密文,防范逐位分析。3.3 IDEA加密算法3.3.1 IDEA概述IDEA是旅居瑞士中国青年学者来学嘉和著名密码专家J.Massey于1990年提出的。它在1990年正式公布并在以后得到增强。这种算法以DES加密算法为基础,接收了DES加密的思想,是对称加密的一种。IDEA的密钥为128位,其中有效位是112位,这么长的密钥在今后若干年内应该是安全的。 IDEA算法也是一种基于数据块的加密算法,它设计了一系列加密轮次,每轮加密都使用从完整的加密密钥中生成的一个子密钥。不过它采用软件实现和采用硬件实现同样快速。 IDEA曾今也是AES算法标准的主要竞争者,其安全性已经在国际密码年会上被证明。IDEA和DES一样都是分组加密算法中的一员。但是比起DES,IDEA的速度更快,安全性更强。因此,IDEA具有十分良好的应用前景18。3.3.2 IDEA算法描述输入的64位数据分组被分成4个16-位子分组:xl,x2,x3和x4。这4个子分组成为算法的第一轮的输入,总共有8轮。在每一轮中,这4个子分组相互相异或,相加,相乘,且与6个16-位子密钥相异或,相加,相乘。在轮与轮间,第二和第三个子分组交换。最后在输出变换中4个子分组与4个子密钥进行运算。在每一轮中,执行的顺序如下19:(1)x1和第一个子密钥相乘。(2)x2和第二个子密钥相加。(3)x3和第三个子密钥相加。(4)x4和第四个子密钥相乘。(5)将第(1)步和第(3)步的结果相异或。 (6)将第(2)步和第(4)步的结果相异或。(7)将第(5)步的结果与第五个子密钥相乘。(8)将第(6)步和第(7)步的结果相加。(9)将第(8)步的结果与第六个子密钥相乘。(10)将第(7)步和第(9)步的结果相加。(11)将第(1)步和第(9)步的结果相异或。(12)将第(3)步和第(9)步的结果相异或。(13)将第(2)步和第(10)步的结果相异或。(14)将第(4)步和第(10)步的结果相异或。每一轮的输出是第(11)、(12)、(13)和(14) 步的结果形成的4个子分组。将中间两个分组分组交换(最后一轮除外)后,即为下一轮的输入。经过8轮运算之后,有一个最终的输出变换19:(1) x1和第一个子密钥相乘。(2) x2和第二个子密钥相加。(3) x3和第三个子密钥相加。(4) x4和第四个子密钥相乘。最后,这4个子分组重新连接到一起产生密文。这个算法用了52个子密钥。首先,将128位密钥分成8个16位子密钥。这些是算法的第一批8个子密钥(第一轮六个,第二轮的头两个)。然后,密钥向左环移x位后再分成8个子密钥。开始4个用在第二轮,后面4个用在第三轮。密钥再次向左环移25位产生另外8个子密钥,如此进行直到算法结束19。IDEA总共需要52个子密钥,其中48个子密钥分别使用在8轮迭代操作中,每轮迭代使用6个子密钥,另外4个子密钥是额外子密钥。这52个子密钥都是从128位密钥中扩展出来的,因此,模乘逆运算和模乘运算是IDEA算法的关键运算。其中,模乘逆运算运用于密钥扩展,复杂度较高,而模乘运算直接关系到IDEA的加解密速度20。 3.3.3 IDEA安全性分析IDEA可以说是目前世界上一种十分安全的加密算法。曾经许多专家都对IDEA的弱点进行分析,均没有效果。对于IDEA的攻击基本就只有穷举攻击了。然而,总所周知IDEA的密钥达到了128位,换算成十进制数的话,那是一个十分庞大的天文数字。因此,破解它以目前的计算机的运算水平而言,基本是不可能的事。因而对于它的算法安全性而言,人们是可以放心的。4 加密算法的实现本次软件设计选择用C+语言来实现。选择C+来作为编程语言在于它具有许多的优点:第一,C+由C语言发展而来,它继承了C语言的许多优点,比如语法简洁灵活,数据结构丰富,运行效率高等。第二,C+引入了类、虚函数、继承等特性。这些特性使得C+能够支持面向对象的编程,使编程更加快捷。第三,用C+编写软件能有效避免平台限定或没有普遍用途的特性。4.1 DES加密算法4.1.1 界面设计与代码程序运行之后,在密钥文本框中输入8位密钥,在明文文本框中输入明文。点击“加密”,把明文加密成密文;点击“解密”,把密文还原成明文。图4-1 DES初始界面其代码如下:/加密过程Int lenth; /输入明文的长度void CBysjDlg:OnBtnDesE() UpdateData(TRUE);lenth = m_DesM.GetLength(); char key8; char Input100,Output100;memcpy(key,(LPCTSTR)m_DesK,8);memcpy(Input,(LPCTSTR)m_DesM,(lenth/8)*8);CString str_C=;CDES des;des.Des_Go(Output, Input, sizeof(Input), key, sizeof(key), TRUE);for(int i=0;i(lenth/8)*8+1;i+)str_C += Outputi; m_DesC=str_C;UpdateData(FALSE);/解密过程void CBysjDlg:OnBtnDesD() / TODO: Add your control notification handler code hereUpdateData(TRUE);char key8; char Input100,Output100;memcpy(key,(LPCTSTR)m_DesK,8);memcpy(Input,(LPCTSTR)m_DesC,(lenth/8)*8);CString str_M;CDES des;des.Des_Go(Output, Input, sizeof(Input),key, sizeof(key), FALSE);for(int i=0;i(lenth/8)*8;i+)str_M += Outputi;m_DesDC=str_M;UpdateData(FALSE);4.1.2 运行结果运行的结果如下图:图4-2 DES测试结果4.2 RSA加密算法4.2.1界面设计与代码运行程序后,首先选择密钥长度,若不选择,则显示选择提示。点击“密钥产生”按钮,产生密钥。输入明文后点击“加密”来进行加密,点击“解密”来对密文解密成明文。图4-3 RSA界面设计其代码如下:unsigned int p,q; /随机素数unsigned int PublicKey; /公钥unsigned int PrivateKey; /私钥unsigned int N; /模数unsigned int Cryptograph100; /存储密文unsigned int Lenght; /明文长度/密钥产生void CBysjDlg:OnBtnProKey() / TODO: Add your control notification handler code hereint len=GetDlgItemInt(IDC_COMBOKEYLENGTH);if(len = 0) MessageBox(请选择密钥!);elseUpdateData(TRUE); CRSA rsa;/随机产生两个素数p,qsrand( time( 0 ) ); while (1)p=(unsigned int)rand();if(len = 32)if (12p & p100 & rsa.IsPrime(p) break;elseif (99p & p250 & rsa.IsPrime(p) break; while (1)q=(unsigned int)rand();if(len = 32)if (12q & q100 & rsa.IsPrime(q) break;elseif (99q & q250 & rsa.IsPrime(q) break;/求模数N N=p*q;/求欧拉函数Eulerunsigned int Euler;Euler=(p-1)*(q-1);/随机产生公钥PublicKeywhile(1)PublicKey=(unsigned int) rand();if (PublicKey Euler & rsa.gcd(PublicKey,Euler)=1) break;/计算私钥PrivateKeyPrivateKey=rsa.ProductD(PublicKey,Euler);m_Euler=Euler;m_Publickey=PublicKey;m_Privatekey=PrivateKey;m_N=N; UpdateData(FALSE);/加密过程void CBysjDlg:OnBtnRsaE() / TODO: Add your control notification handler code hereUpdateData(TRUE);Lenght = m_RsaM.GetLength(); LPTSTR p = m_RsaM.GetBuffer(Lenght);char * CryptographCString = new char Lenght;/加密明文if(m_Publickey=0)MessageBox(请点击密钥产生,产生一个密钥对!); elsefor (unsigned int i=0;iLenght;i+) unsigned int temp= 1;for(unsigned int k=0;kPublicKey;k+)temp *= pi; temp %= N; Cryptographi = temp % N;for (i=0;iLenght;i+) CryptographCStringi = (char) Cryptographi;m_RsaC.Format(_T(%s),CryptographCString); UpdateData(FALSE);/解密过程void CBysjDlg:OnBtnRsaD() UpdateData(TRUE); char * Decrypt = new charLenght;/解密密文for (unsigned int i=0;iLenght;i+)unsigned int temp = 1;for(unsigned int k=0;kPrivateKey;k+)temp *= Cryptographi; temp %= N; Decrypti= temp % N;m_RsaDC.Format(_T(%s),Decrypt); UpdateData(FALSE); 4.2.2运行结果运行结果图:图4-4 运行结果图图4-5 RSA运行结果5 总结与展望5.1 总结密码技术的研究一直都是各国信息安全专家们研究的重点。在各国政府的大力投入下,各种密码技术得到了大力的发展。但是,在密码技术发展的同时,针对各种密码技术的破解技术也同时在快速发展着。由此可见,当今的信息安全的威胁依旧严重。我们需要认清一个事实,那就是没有永远不被破解的加密。数据加密是肯定可以被破解的, 但我们所想要的是一个特定时期的安全,也就是说, 密文的破解应该是足够的困难, 至少是在短时间内实现是不可能的, 这也就需要我们不断对加密技术进行新的研究和探索21。本文介绍了密码技术的重要性和研究发展它的必要性。同时,本文选取了几个加密算法进行深入分析和学习。DES和RSA分别作为对称密钥密码和公钥密码的代表和基础,分析它们能让我们更好的学习和掌握着两类密码系统的算法基础。它们的加密思路推动了密码技术的发展。IDEA作为DES加密算法的改进,把原来DES的56位密钥扩展为128位。这大大加强了算法的安全性。同时,它的算法设计使IDEA的加密速度也高于DES。最后,通过C+语言,编写了一个能够实现DES和RSA两种算法的软件程序。 5.2 展望21世纪是信息化的世纪。从计算机产生到今天,信息在我们生活中的地位越来越高,重要性也越来越强。这使得我们对高效安全的密码技术的需要越来越迫切。事物总是在向前发展,停止前进的总将会被淘汰。密码技术也不例外。计算机性能和科学发展,纵然是密码技术得到了提升,但是也为密码的破解提供了助力。所以,我们需要不断发展密码技术来应对不断加强且新颖的密码攻击技术,保证信息的安全性。密码技术将会有如下的几点发展:(1) 单一加密体制转向混合加密体制。(2) 在原有的密码基础上不断改进,不断提高密码的加密强度。(3) 在混沌理论的基础上发展混沌密码学。(4) 发展量子加密,实现在光纤中的数据安全。(5) 在生物特征的基础上,发展利用人体声音,照片,瞳孔等个人所特有的特征进行加密,实现数据安全。参考文献1 周宏仁.中国信息化和电子政务的发展J.中国信息界,2010,01:4-8.2 刘康.浅析我国电子政务的发展现状及完善对策J.科技致富向导,2010,15:50.3 付增少,娄世峰,申瑞卜,张景生.军事信息系统的兴起与密码技术发EB/OL./Conference_5306303.aspx.2011-04-22.4 朱海岩,赵新平.数据加密技术初探J.电脑知识与技术,2010,06:5448-5450.5 王晓英.数据加密基本方法J.赤峰学院学报(自然科学版),2010,26:24-27.6YINChun-yong1,LIJian-shi1,SUNRu-xia.TheQueryandInformationExposingforEncryptedDatabaseJ.贵州大学学报(自然科学版),2007,03:277-283.7 阙喜戎,孙锐,龚向阳,王纯.信息安全原理与应用M.北京:清华大学出版社,2003.8 张晓婷,孙祝广.国内外密码理论与技术研究现状及发展趋势J.中国科技信息,2006,14:257-258.9 蒋伟杰.浅议网络传输中数据加密技术的研究J.电脑知识与术,2008,04:1063-1098.10 DESEB/OL.维基百科./zh/DES.2011-04-10.11 李杰,李新艳,张静.数据加密中的DES加密算法详解J.商场现代化,2009,26:6-8.12 胡美燕,刘然慧.DES算法安全性分析与研究J.内蒙古大学学报,2005,06:693-697.13 张玉安,冯登国.BLOCKCIPHERSWITHTCPARAMETERSJ.广西师范大学学报(自然科学版),2005,02:21-26.14 肖力.DES算法及安全性分析J.上饶师范学院学报,2002,06:14-19.15 叶建龙.RSA加密中大素数的生成方法及其改进J.廊坊师范学院学报(自然科学版),2010,02:55-57.16 RSA加密演算法EB/OL.维基百科./zh/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95.2011-03-01.17 李天增,王瑜.公钥密码体制RSA安全分析及应用J.宜宾学院学报,2009,06:47-48.18 百度百科EB/OL./view/92629.htm#2.2011-05-02.19 张莉.IDEA加密解密技术应用研究J.商场现代化,2008,35:22-23.20 杨伟.几种加密算法的分析和比较J.科技信息,2010,27:72.21 郭仁东.数据通信中加密技术的实现J.电脑知识与技术,2008,03:830-831.本科毕业设计(论文)任 务 书课题名称数据加密方法的研究与实现指导教师学院商学院专业信息管理与信息系统班级一、主要任务与目标:在网络环境下数据的加密对于保护数据安全非常重要。加密方法有对称加密和非对称加密。对称加密(也叫私钥加密)指加密和解密使用相同密钥的加密算法。非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。本课题要求学生学习数据加密的方法和原理。二、主要内容与基本要求: 数据的加密方法有对称加密和非对称加密,基于“对称密钥”的加密算法主要有DES、TripleDES、RC2、RC4、RC5和Blowfish。非对称加密的算法常用的有RSA、Elgamal、背包算法、Rabin、HD,ECC。学习这些算法并分析其练习和区别。同时,在算法熟悉的基础上,选择一种编程语言编写程序实现其中的一些加密算法。三、计划进度:2010.11.22-2010.12.10 文献阅读并撰写文献分析报告2010.12.11-2010.12.20 在文献分析基础上思考选题中要完成的关键内容,并撰写开题报告2010.12.21-2010.12.28 完成外文翻译2011.01.01-2011.03.01 完成关键加密算法的学习和编写加密程序,完成论文提纲2011.03.01-2010四、主要参考文献:1李益骐.远程教育在线考试阅卷系统的设计及其安全性J.西北大学学报(自然科学版), 2010,02:239-2422 梅华威, 李春花,张铭泉.基于AES改进算法的企业级数据库安全策略J.微计算机信息,2010,15:19-213 林梧. 基于.NET Web应用程序开发的加密技术J.科技创新导报,2009,32:254-2554 张玉安,冯登国.BLOCK CIPHERS WITH TC PARAMETERSJ.广西师范大学学报(自然科学版), 2005,02:21-265 YIN Chun-yong1, LI Jian-shi1, SUN Ru-xia.The Query and Information Exposing for Encrypted DatabaseJ.贵州大学学报(自然科学版), 2007,03:277-283(2011届)本科毕业论文(设计)开题报告题目: 数据加密方法的研究与实现 学院: 专业: 信息管理与信息系统 班级: 学号: 姓名: 指导教师: 开题日期: 教务处制一、选题的背景和意义当今社会是一个高速发展的信息化社会,互联网的发展及计算机的普及不仅为我们的生活带来了许多的便利,也为这个社会的发展带来了巨大的动力。

温馨提示

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

评论

0/150

提交评论