文件加密与解密算法研究设计和实现 计算机专业_第1页
文件加密与解密算法研究设计和实现 计算机专业_第2页
文件加密与解密算法研究设计和实现 计算机专业_第3页
文件加密与解密算法研究设计和实现 计算机专业_第4页
文件加密与解密算法研究设计和实现 计算机专业_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

文件的加密与解密算法研究与实现摘要:随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。本文是一篇讨论关于常用文件加密解密算法的毕业设计论文,它详细的讲述了文件加密解密算法实现的过程中所用到的方法、技术。对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表RSA算法和DES算法进行了研究和比较。关键词:解密;文件加密;密码体制;DES;RSADesignandImplementationofDocumenttaggingsoftwareAbstract:Withtheadventoftheinformationsociety,peopleintheenjoymentofinformationresourcesbroughtabouttremendousbenefits,butalsofacedwithaletter

Incomesecurity,aseveretest.Informationsecurityhasbecomeaworldwidereality,informationsecurityhasbeenathreattothecountry'spolitical

Governance,economic,military,cultural,ideologicalandotherareasatthesametime,theissueofinformationsecurityisalsoapossibilityofretainingtheirownpersonal

Privacykey.Informationsecurityandsocialstabilityisanecessarypreconditionforsecurity.

Thisarticleisadiscussionpaperonencryptionanddecryptionalgorithmscommonlyusedingraduatedesignthesis,whichdocumentsindetailabouttheencryptionanddecryptionprocessofalgorithmusedinthemethodsandtechniques.Ofpublic-keycryptosystemprivatekeycryptosystemandanalysisandresearch,andpublic-keycryptosystemandonbehalfofprivatekeycryptographyalgorithmRSAalgorithmandDEShavebeenstudiedandcompared.

Keywords:Decryption;fileencryption;cryptosystem;DES;RSA目录摘要……………………2目录 31、前言 42、需求分析 97337\h52.1系统概述 52.1.1概述 52.2密码学的发展 52.3文件加密解密中密码体制研究 82.3.1密码原理 82.3.2密码体制 94、分组加密解密算法-DES算法 104.1DES算法 103.2RSA算法 113.2工作原理 227297347\h113.2.1优点 153.2.1缺点 154.20.DES加密流程图: 174.3详细解析 181取得64位的密钥,每个第8位作为奇偶校验位。 181-2、变换密钥。 18HYPERLINK\l"_Toc227297354"1-2-1、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。 181-2-2、将变换后的密钥分为两个部分 181-2-3、生成16个子密钥 PAGEREF_Toc227297356\h182、处理64位的数据 192-1、取得64位的数据 192-2、将64位数据按下表变换(IP) 227297359\h192-3、将变换后的数据分为两部分 202-4、用16个子密钥加密数据 202-4-1、将32位的R[I-1]按下表 27297362\h205DES算法实例演示 245.1实例程序DESTOOL 245.2文件功能描述:DES加密类头文件 PAGEREF_Toc227297365\h255测试分析 296心得体会 30参考文献 31HYPERLINK\l"_Toc227297369"致谢 311、前言信息安全是一个综合性的交叉学科领域,广泛涉及数学、密码学、计算机、通信、控制、人工智能、安全工程、人文科学等诸多学科,是近几年迅速发展的一个热点学科领域。信息对抗和网络安全是信息安全的核心热点,它的研究和发展又将刺激、推动和促进相关学科的研究与发展。至今,密码技术是取得信息安全性最有效的一种方法,密码技术是信息安全的核心技术。[1]通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。信息安全产品从应用类型上可以分为防火墙类产品、防病毒类产品、防攻击类产品、密码类产品、认证类产品和访问控制类产品。相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。在本次毕业设计中,对公钥密码体制和私钥密码体制进行了分析和研究,并对公钥密码体制和私钥密码体制的代表RSA算法和DES算法进行了研究和比较。并且实现了基本的文件加密解密的处理流程,能提供对文件的安全、有效的保护。2、需求分析2.1系统概述2.1.1概述信息是一种资源,也是一种财富。在现代社会中,信息处理和通信技术日益发展,保护信息的安全,特别是保护重要信息的安全,越来越成受到国内外有关研究人员的极大重视。当前由于信息的保护不利和失误,世界各国遭受的损失是巨大的。现在,国际互联网上的各站点,几乎都有各种各样的安全措施,例如防火墙(FireWall)、网络加密、加密狗等。但是,这些都是系统或网站层次的安全设施。对于广大用户来说,更为直接、也更为有效的办法,就是使用信息加密技术。加密技术是一门实用的技术,有着悠久的历史。过去,加密技术仅被军事和谋报人员以及某些大型商业企业所采用,应用范围十分有限。加密学也是一门与数学有关的深奥的科学,有能力研究加密学的人为数不多。恐怕这也是它鲜为人知、较少应用的原因。信息安全的内容主要包括五个部分:信息的保密性、信息的完整性、信息的可用性、信息的可控性、信息的不可否认性。密码技术是保证信息安全的核心。2.2密码学的发展认证过程中,用户必须向系统提供能够证明自己身份的信息,证明用户身份的信息种类很多,可以是用户所知道的秘密(口令),也可以是生物特征(如指纹)等,但目前使用最广泛的仍然是用户口令(password)。在认证系统中口令占据了非常重要的地位,因此对口令的保护就变得至关重要。人们提出了许多保护口令的方法,力图保障口令的安全与秘密。这些保护认证信息的方法以及认证系统是随着密码学的发展一起发展的,密码学为我们提供了保护口令的一个重要方向。归根结底,用户用以证明自己身份的是一段信息,不论它是口令还是指纹。而迄今为止,确保信息安全的最重要手段是加密。对信息的加密、解密、信息的保密传输,这正是密码学研究的内容。

密码学泛指一切有关研究密码通信的学问,其中包括下面两个领域:如何达成秘密通信,以及如何破译秘密通信。也就是密码编码学:指如何达到信息的秘密性,鉴别性的科学;密码分析学:泛指如何破解密码系统,或伪造信息使密码系统误以为真的科学。从密码学的发展来看,它经历了传统(古典)密码学、近代密码学、现代密码学几个阶段,计算机、数学领域的最新成果往往与密码学有关或被应用于密码学研究中。

传统密码学、近代密码学的发展

密码学拥有悠久、丰富多彩的历史。作为古典密码其中的一种,早期出现的密写术形式只需要纸和笔就可以完成。古典密码学的两大范畴是将消息内容进行重新排列的位移密码和系统地将字母进行替换的替换密码。古典密码学会透露出与明文统计学结果相关的大量信息,因此容易被破解,如对频率分析可以有效地攻击古典密码。尽管保密强度很低,由于实现难度低,加密解密快,古典密码至今仍然被广泛使用。在古典密码学中,有四种类型的代替密码:

(1)简单代替密码,或单字母密码:就是明文的一个字符用相应的一个密文字符代替。Caesar密码就是典型的简单替代密码。

(2)多编码代替密码:它与简单代替密码系统相似,唯一的不同是单个字符明文可以映射成密文的几个字符之一,例如A可能对应于5、13、25或56,“B”可能对应于7、19、31或42,等等。

(3)字母代替密码:字符块被成组加密,例如“ABA”可能对应于“RTQ”,ABB可能对应于“SLL”等。

(4)多表代替密码:由多个简单的代替密码构成,例如,可能有5个被使用的不同的简单代替密码,单独的一个字符用来改变明文的每个字符的位置。

20世纪初,包括转轮机在内的一些机械密码加密装置被发明出来,其中最有名的是二次世界大战中德国使用的恩尼格码(Enigma)机。由这些装置实现的密码显著提高了密码分析的复杂程度,大量的攻击也仅仅取得了有限的结果。

古典密码学以移位密码、替换密码、转轮机为代表,以替代和置换为基础的密码系统在今天看来已经不堪一击,无法保证信息的安全,对处心积虑的攻击者来说形同虚设,因为已经有成熟的分析方法来破解这一类的加密方法。

借助电子计算机的发展,人们可以实现更复杂的密码系统。与古典密码和机械密码对26个字母进行操作不同,计算机密码的一个显著特征是对二进制串进行操作。计算机密码对密码分析有更强的抵抗力,只有少数情况下唯密文攻击才会生效。

密码学的大发展时期是上世纪70年代,以DES和RSA算法的提出为代表。一系列的突破创立了新的密码学体系。DES是对称密钥分组密码的一个典型代表,美国国家标准局于1977年公布了由IBM公司研制的一种加密算法,批准把它作为非机要部门使用的数据加密标准.简称DES,DES是DataEncryptionStandard的缩写。自从公布以来,它一直广泛用于国际上商用保密通信和计算机通信。但由于弱密钥的问题和新的攻击手段不断出现(差分攻击、线性攻击),单纯的DES加密已经很少用于实际。更多的情况下是采用增加密钥长度和多重DES加密的办法。

RSA作为一种成功的公钥密码系统,与传统的对称密码系统(加密、解密使用相同的密钥)相比,最大的特点就是解决了大量密钥分配、传输的问题。在公钥密码系统中,每个通信者拥有一个密钥对,可用其中一个来加密,用另一个来解密,公开其中之一(公钥)而另一半只有自己知道(私钥)。当需要向某人发送信息时,只需要用他的公开密钥对消息进行加密,接收者再用自己的私钥解密即可。而由于公钥密码的特性,这种密码系统也可以用于数字签名。与对称密码一样,公钥密码也容易受到攻击,解决方法是增加密钥长度,但密钥长度的增长会使得加密、解密速度变慢,所以公钥密码目前主要仅用于密钥管理和签名中。

近代密码学的另一个分支是序列密码,这种密码体制采用与明文长度相同的密钥,利用模加(异或)的方法来掩盖明文的内容。这种加密方法虽然简单,但在使用一次性密钥的情况下,可获得极高的安全性,由于密钥不重复使用,给破译带来了极大的困难。但这种方法也有其缺点,由于密钥只使用一次,不适合对大量数据进行加密,尤其是流媒体数据,而且大量密钥的分发、传送也是一个问题。这种方法安全性的关键是要保证密钥序列的随机性,然而“真”随机数是不容易通过固定算法来产生的,而使用“伪随机数”则存在着一定的风险。

近年来提出的“量子密码”采用了量子状态来传递信息。“海森堡测不准原理”是量子力学的基本原理,它表明,在同一时刻以相同的精度测定量子的位置与动量是不可能的,只能精确测定两者之一。“单量子不可复制定理”是“海森堡测不准原理”的推论,它表明,在不知道量子状态的情况下复制单个量子是不可能的,因为要复制单个量子就只能先作测量,而测量必然改变量子的状态,所以说不可能。这样使用量子状态作为“一次性便签”可以达到无条件保密。因为如果量子在传输中被测量,其状态就会改变,从而在传输中监听者会因此而暴露。虽然量子密码拥有优秀的安全特性,但目前仍处于研究阶段。2.3文件加密解密中密码体制研究

就整体而言,计算机网络加密问题应包括文件存储加密、口令存储加密、数据库数据加密、电子邮件加密等信息加密和数据传输加密(信道加密)以及密码体制、密钥管理中心等三个方面的内容,下面我们通过加密原理、密码体制和产品功能介绍来概略地讲讲这三个方面的内容:

2.3.1密码原理

(1)密码原理。所谓加密,就是将正常情况下可懂的文件数据输入密码机,由密码机变成不可懂的乱码,即将“明文”变成“密文”;所谓解密,就是上述过程的逆过程,即将“密文”

变成“明文”。密码机可看做是一个用电子元件实现一种复杂数学运算的机器。复杂数学运算可记为,这里C=密文,p=明文,k=密钥,f是密码算法。K是自变量,C是因变量。不同的K有不同的C,对于某个密码算法f,K的选择范围越大,C的变化就越多,这个密码算法被人破译的难度就越大,保密强度就越高。如何评价K的选择范围大小呢?一般是看K的位数,位数长的(如128位以上)选择范围大,位数短的(如56位)选择范围小。一个国家的密码政策,通常是用位数长的高强度密码(位数可达)保护国家秘密,其它用于保护商业秘密。

在数据传输加密过程中,收发双方线路密码机使用的是相同的密码算法,注入了相同的密钥,发方向收方发出明文,经密码机变成密文后送上公网通信线路,到达收方后先经密码机解密再送到收方电脑上。密文在公用通信网上传输时,如果被截收,窃密方收到的是不可懂的乱码,无法窃取信息内容。

在文件存储加密中,加密解密卡加解密采用同一种算法和同一个密钥,工作人员用电脑处理文件后先将文件加密再存入磁盘,以防窃密者盗用磁盘窃取文件。工作人员调用该文件时,文件先经解密再从显示器上显示出来以供使用。

2.3.2密码体制(2)密码体制。刚才讲密码原理时,收发双方密码机的密码算法一致、密钥一致,这在密码体制中叫“秘密密钥体制”或“单密钥体制”,这是一种传统的密码体制,有系统的理论研究和完善的管理机制,技术成熟,性能稳定,国内自行研制的产品安全可靠、保密强度高,一般用于文件数据加密存储和传输。国外著名的DES密码就是美国政府1977年发布的密钥长度为56位的“秘密密钥体制”的密码。这种密码的缺陷是:仅适用于内部的,点对点方式的,事前双方已知密钥的两点之间的加密传输,保守密钥的秘密十分重要,密钥一旦丢失,整个系统都要立即更换密钥,否则窃密者将可能轻而易举的破解密文。

随着近代计算机网络的发展,不同部门、不同单位网上交往增多,“单密钥体制”显出了它的局限性,人们很难对众多的部门和单位保管好各自不同的密钥。于是人们又发明了“公开密钥体制”或叫“双密钥体制”。它是基于一些数学问题而发明出来的密码体制,这些数学问题可记为,其中,写在一起就是,这个公式说明有这样一种数学运算,它可以将用密钥k加密的密文用密钥k’解密,国外1978年公布的RSA密码就是这种有两个密钥的密码。这种密码保密强度不如单密钥体制的密码,一般用于通信双方的身份确认和数字签名。

在实用的互联网络中,各用户通过加密传输可形成一个虚拟的保密互联网。该网要由一个各用户认可的密钥管理中心来生成、管理、分发和销毁密钥,同时各用户可将自己的“公钥”也存放在密钥管理中心。各用户需进行保密通信时,先通过公钥系统进行身份确认(这个过程中密钥管理中心可起到仲裁鉴别作用),双方确认身份后由密钥管理中心分发秘密密钥,双方用得到秘密密钥进行数据或文件的加密传输。这种工作方式不但适用于党政机关内部,也同样适用于电子商务,但电子商务和党政机关不能使用同一个级别的密码设备,党政机关用的是“普密”设备,电子商务只能用“商密”设备,二者的保密强度是不一样的。4、分组加密解密算法-DES算法4.1DES算法DES算法为密码体制中的对称密码体制,又被成为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法。其密钥长度为56位,明文按64位进行分组,将分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES加密算法特点:分组比较短、密钥太短、密码生命周期短、运算速度较慢。DES工作的基本原理是,其入口参数有三个:key、data、mode。key为加密解密使用的密钥,data为加密解密的数据,mode为其工作模式。当模式为加密模式时,明文按照64位进行分组,形成明文组,key用于对数据加密,当模式为解密模式时,key用于对数据解密。实际运用中,密钥只用到了64位中的56位,这样才具有高的安全性。DES(DataEncryptionStandard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。虽然56位密钥的DES算法已经风光不在,而且常有用Des加密的明文被破译的报道,但是了解一下昔日美国的标准加密算法总是有益的,而且目前DES算法得到了广泛的应用,在某些场合,仍然发挥着余热。3.2RSA算法当前最著名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的RonRivest,AdiShamir和LeonardAdleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的著名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。

RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性:

1.已有确定一个数是不是质数的快速算法;

2.尚未找到确定一个合数的质因子的快速算法。3.2工作原理

1)任意选取两个不同的大质数p和q,计算乘积r=p*q;

2)任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。

3)确定解密密钥d:d*e=1modulo(p-1)*(q-1)根据e、p和q可以容易地计算出d。

4)公开整数r和e,但是不公开d;

5)将明文P(假设P是一个小于r的整数)加密为密文C,计算方法为:

C=Pemodulor

6)将密文C解密为明文P,计算方法为:

P=Cdmodulor

然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

数学原理

定理

若p,q是相异质数,rm==1mod(p-1)(q-1),

a是任意一个正整数,b==a^mmodpq,c==b^rmodpq,

则c==amodpq

证明的过程,会用到费马小定理,叙述如下:

m是任一质数,n是任一整数,则n^m==nmodm

(换另一句话说,如果n和m互质,则n^(m-1)==1modm)

运用一些基本的群论的知识,就可以很容易地证出费马小定理的

证明

因为rm==1mod(p-1)(q-1),所以rm=k(p-1)(q-1)+1,其中k是整数

因为在modulo中是preserve乘法的

(x==ymodz

and

u==vmodz

=>

xu==yvmodz),

所以,c==b^r==(a^m)^r==a^(rm)==a^(k(p-1)(q-1)+1)modpq

1.如果a不是p的倍数,也不是q的倍数时,

则a^(p-1)==1modp(费马小定理)

=>

a^(k(p-1)(q-1))==1modp

a^(q-1)==1modq(费马小定理)

=>

a^(k(p-1)(q-1))==1modq

所以p,q均能整除a^(k(p-1)(q-1))-1

=>

pq|a^(k(p-1)(q-1))-1

即a^(k(p-1)(q-1))==1modpq

=>

c==a^(k(p-1)(q-1)+1)==amodpq

2.如果a是p的倍数,但不是q的倍数时,

则a^(q-1)==1modq(费马小定理)

=>

a^(k(p-1)(q-1))==1modq

=>

c==a^(k(p-1)(q-1)+1)==amodq

=>

q|c-a

因p|a

=>

c==a^(k(p-1)(q-1)+1)==0modp

=>

p|c-a

所以,pq|c-a

=>

c==amodpq

3.如果a是q的倍数,但不是p的倍数时,证明同上

4.如果a同时是p和q的倍数时,

则pq|a

=>

c==a^(k(p-1)(q-1)+1)==0modpq

=>

pq|c-a

=>

c==amodpq

Q.E.D.

这个定理说明a经过编码为b再经过解码为c时,a==cmodn

(n=pq)

但我们在做编码解码时,限制0<=a<n,0<=c<n,

所以这就是说a等於c,所以这个过程确实能做到编码解码的功能为了说明该算法的工作过程,我们下面给出一个简单例子,显然我们在这只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大的多得多。

例:选取p=3,q=5,则r=15,(p-1)*(q-1)=8。选取e=11(大于p和q的质数),通过d*11=1modulo8,计算出d=3。

假定明文为整数13。则密文C为

C=Pemodulor

=1311modulo15

=1,792,160,394,037modulo15

=7

复原明文P为:

P=Cdmodulor

=73modulo15

=343modulo15

=13

因为e和d互逆,公开密钥加密方法也允许采用这样的方式对加密信息进行"签名",以便接收方能确定签名不是伪造的。

两个在不安全信道中通信的人,假设为Alice(收信者)和Bob(发信者),他们希望能够安全的通信而不被他们的敌手Oscar破坏。Alice想到了一种办法,她使用了一种锁(相当于公钥),这种锁任何人只要轻轻一按就可以锁上,但是只有Alice的钥匙(相当于私钥)才能够打开。然后Alice对外发送无数把这样的锁,任何人比如Bob想给她寄信时,只需找到一个箱子,然后用一把Alice的锁将其锁上再寄给Alice,这时候任何人(包括Bob自己)除了拥有钥匙的Alice,都不能再打开箱子,这样即使Oscar能找到Alice的锁,即使Oscar能在通信过程中截获这个箱子,没有Alice的钥匙他也不可能打开箱子,而Alice的钥匙并不需要分发,这样Oscar也就无法得到这把“私人密钥”。

3.2.1优点RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对于网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码系统相对于对称密码系统最突出的优点。3.2.1缺点缺点:

1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2)安全性,RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

(XM)d=Xd*Mdmodn

前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-WayHashFunction对文档作HASH处理,或同时使用不同的签名算法。除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.

3)速度太慢,由于RSA的分组长度太大,为保证安全性,n至少也要600bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(SecureElectronicTransaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,该算法也已经在互联网的许多方面得以广泛应用,包括在安全接口层(SSL)标准(该标准是网络浏览器建立安全的互联网连接时必须用到的)方面的应用。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。

但目前RSA算法的专利期限即将结束,取而代之的是基于椭圆曲线的密码方案(ECC算法)。较之于RSA算法,ECC有其相对优点,这使得ECC的特性更适合当今电子商务需要快速反应的发展潮流。此外,一种全新的量子密码也正在发展中。4.20.DES加密流程图:1-1、变换密钥4.3详细解析1取得64位的密钥,每个第8位作为奇偶校验位。1-2、变换密钥。1-2-1、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。PermutedChoice1(PC-1)574941332517915850423426181025951433527191136052443663554739312315762544638302214661534537292113528201241-2-2、将变换后的密钥分为两个部分,开始的28位称为C[0],最后的28位称为D[0]。1-2-3、生成16个子密钥,初始I=1。1-2-3-1、同时将C[I]、D[I]左移1位或2位,根据I值决定左移的位数。见下表I:12345678910111213141516左移位数:11222222122222211-2-3-2、将C[I]D[I]作为一个整体按下表(PC-2)变换,得到48位的K[I]PermutedChoice2(PC-2)14171124153281562110231912426816727201324152313747553040514533484449395634534642503629321-2-3-3、从1-2-3-1处循环执行,直到K[16]被计算完成。2、处理64位的数据2-1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零)2-2、将64位数据按下表变换(IP)InitialPermutation(IP)585042342618102605244362820124625446383022146645648403224168574941332517915951433527191136153453729211356355473931231572-3、将变换后的数据分为两部分,开始的32位称为L[0],最后的32位称为R[0]。2-4、用16个子密钥加密数据,初始I=1。2-4-1、将32位的R[I-1]按下表(E)扩展为48位的E[I-1]Expansion(E)32123454567898910111213121314151617161718192021202122232425242526272829282930313212-4-2、异或E[I-1]和K[I],即E[I-1]XORK[I]2-4-3、将异或后的结果分为8个6位长的部分,第1位到第6位称为B[1],第7位到第12位称为B[2],依此类推,第43位到第48位称为B[8]。2-4-4、按S表变换所有的B[J],初始J=1。所有在S表的值都被当作4位长度处理。2-4-4-1、将B[J]的第1位和第6位组合为一个2位长度的变量M,M作为在S[J]中的行号。2-4-4-2、将B[J]的第2位到第5位组合,作为一个4位长度的变量N,N作为在S[J]中的列号。2-4-4-3、用S[J][M][N]来取代B[J]。SubstitutionBox1(S[1])1441312151183106125907015741421311061211953841148136211151297310501512824917511314100613S[2]1518146113497213120510313471528141201106911501471110413158126932151381013154211671205149S[3]1009146315511312711428137093461028514121115113649815301112125101471101306987415143115212S[4]7131430691012851112415138115615034721211014910690121171315131452843150610113894511127214S[5]2124171011685315130149141121247131501510398642111101378159125630141181271142136150910453S[6]1211015926801334147511101542712956113140113891415528123704101131164321295151011141760813S[7]4112141508133129751061130117491101435122158614111312371410156805926111381410795015142312S[8]13284615111109314501271151381037412561101492711419121420610131535821147410813151290356112-4-4-4、从2-4-4-1处循环执行,直到B[8]被替代完成。2-4-4-5、将B[1]到B[8]组合,按下表(P)变换,得到P。PermutationP16720212912281711523265183110282414322739191330622114252-4-6、异或P和L[I-1]结果放在R[I],即R[I]=PXORL[I-1]。2-4-7、L[I]=R[I-1]2-4-8、从2-4-1处开始循环执行,直到K[16]被变换完成。2-4-5、组合变换后的R[16]L[16](注意:R作为开始的32位),按下表(IP-1)变换得到最后的结果。FinalPermutation(IP**-1)40848165624643239747155523633138646145422623037545135321612936444125220602835343115119592734242105018582633141949175725以上就是DES算法的描述。5DES算法实例演示5.1实例程序DESTOOL这是DESTOOL的截图,MFC写的,编译器是VS20085.2文件功能描述:DES加密类头文件#ifndefyxyDESH

#defineyxyDESH#include<string>

#include<cmath>

#include<stdio.h>

#include<windows.h>

usingnamespacestd;

classyxyDES

{

public:

yxyDES();//类构造函数

~yxyDES();//类析构函数

voidInitializeKey(string);

//功能:产生16个28位的key

//参数:源8位的字符串(key)

//结果:函数将调用privateCreateSubKey将结果存于charSubKeys[16][48]

voidEncryptData(string);

//功能:加密8位字符串

//参数:8位字符串

//结果:函数将加密后结果存放于privateszCiphertext[16]

//

用户通过属性Ciphertext得到

voidDecryptData(string);

//功能:解密16位十六进制字符串

//参数:16位十六进制字符串

//结果:函数将解密候结果存放于privateszPlaintext[8]

//

用户通过属性Plaintext得到

voidEncryptAnyLength(string);

//功能:加密任意长度字符串

//参数:任意长度字符串

//结果:函数将加密后结果存放于privateszFCiphertextAnyLength[8192]

//

用户通过属性CiphertextAnyLength得到

voidDecryptAnyLength(string);

//功能:解密任意长度十六进制字符串

//参数:任意长度字符串

//结果:函数将加密后结果存放于privateszFPlaintextAnyLength[4096]

//

用户通过属性PlaintextAnyLength得到

voidSetCiphertext(char*value);

//Ciphertext的set函数

char*GetCiphertext();

//Ciphertext的get函数

voidSetPlaintext(char*value);

//Plaintext的set函数

char*GetPlaintext();

//Plaintext的get函数

char*GetCiphertextAnyLength();

//CiphertextAnyLength的get函数

char*GetPlaintextAnyLength();

//PlaintextAnyLength的get函数

private:

charSubKeys[16][48];//储存16组48位密钥

charszCiphertext[16];//储存16位密文(十六进制字符串)

charszPlaintext[8];//储存8位明文字符串

charszFCiphertextAnyLength[8192];//任意长度密文(十六进制字符串)

charszFPlaintextAnyLength[4096];//任意长度明文字符串

voidCreateSubKey(char*);

//功能:生成子密钥

//参数:经过PC1变换的56位二进制字符串

//结果:将保存于cha

温馨提示

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

评论

0/150

提交评论