如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
万方数据DES算法原理及实现软件开发与设计ThePrincipleandImplementofDESAlgorithm管莹,敬茂华引言DES算法剖析IP、子密钥Ki及获取、密码函数F、末置换函数驴·。SOFllWA(东北大学秦皇岛分校计算机工程系,秦皇岛066004)摘要:DES算法是一种通用的计算机加密算法,主要用于民用加密。本文深入地剖析了DES算法的原理及运算过程,并给出了该算法C语言实现的代码解析,最后简要说明了其安全性。关键词:DES;加密;原理;密钥GUAN'lring,JING(ComputerQinhuangdao,Qinhuangdao066004)随着计算机网络的飞速发展,产生了大量的电子数据。这些电子数据在网络的传输过程中受到了很多威胁。现代密码学的应用保证了电子数据的保密性、完整性和真实性。未作任何处理的消息称为明文,用某种方法伪装消息以隐藏其内容的过程称为加密,加密后的消息称为密文。将密文转换为明文的过程称为解密。密码算法也称密码函数,是用于加密和解密的数学函数。如果算法本身是保密的,这种算法称为受限算法。受限算法不可能进行质量控制或标准化。现代密码学利用密钥解决了加密算法的受限性。基于密钥的算法的安全性在于其密钥的安全性,其算法本身是公开的。基于密钥的算法通常有两类:对称算法和公开密钥算法。对称算法又称为传统密码算法。对称算法的对称性体现在加密密钥能够从解密密钥推算出来,反之亦然。在大多数对称算法中,加解密的密钥是相同的。可见,对称密钥算法的加解密密钥都是保密的。而公开密钥算法的加密密钥是公开的,解密密要是保密的。对称密钥算法又分为两种:分组密码和流密码。分组密码将明文分割为若干个定长的数据块(称为一个分组),每次对一个分组进行处理;流密码又称序列密码,依次对输入每个元素进行处理。DES算法是一种最通用的对称密钥算法,属于分组密码算法。DES主要用于民用敏感信息的加密。该算法是IBM公司于1975年研究成功并公开发表的,于1977年7月15日得到美国国家标准局的正式许可,作为联邦信息处理标准46号,供商业界和非国防性政府部门使用。DES算法加解密过程DES算法的加密由四部分完成,分别为:初始置换函数本文收稿日期:2008年10月26DES的分组长度为64位(比特)。初始置换函数IP接受长度为64位的明文输入,末置换函数IP一1输出64位的密文。在子密钥的获取过程中,通过密钥置换Pc—l获取从Kl到K16共16个子密钥,这16个子密钥分别顺序应用于密码函数的16次完全相同的迭代运算中。如图1所示。图1DES加密过程DES的解密算法与加密算法完全相同,只需要将密钥的应用次序与加密时相反应用即可。即解密过程是初始置换函数IP接受长度为64比特的密文输入,将16个子密钥按照K16到K1的顺序应用与函数F的16轮迭代运算中,然后将迭代的结果经由末置换函数IP.1得到64位的明文输出。DES算法运算过程DES主要采用置换和移位运算来实现加解密,接下来深入剖析DES每个部分运算的实现过程。(1)初始置换函数IPMaohuaDepartmentanalyzesAlgorithm,andwords:DES;encryption;principle;security12Et一5一REDEVELOPMENTANDDESIGNEngineeringNortheasternUniversityAbstract:DESisthemostpopularencryptionAlgorithm,itusedmostlyinencryption.ThispaperResearchprincipleimplementit’SprogramscriptC.Atlast,itpresentssecurityAlgorithm.Key2.12.2at万方数据卜)】、————‘v’———。:、————’v———。电脑编程技巧与维护64位的明文分组x首先经过一个初始置换函数IP进行置换运算,产生一个64位的输出x0,该输出被分成两个分别为32位的左半部分Lo和右半部分RO,用于F函数的16轮迭代运算的首次迭代的初始输入。初始置换函数IP实际上就是一张8x8(8行8列)的迭代表,如表I所示。明文分组中的64位按照表中的规定重新进行排序,其排列顺序为从左到右,从上到下。按表I所示,明文中的第58位被放置在xO的第1位,第50位防止在第2位,依次类推。表l初始置换函数IP(2)获取子密钥Ki子密钥的获取主要通过置换和移位运算来实现。DES加密算法的密钥长度为56位,由用户提供,是DES算法的输入之一。但用户输入的密钥是64位的,按8行8列从左到右从上到下地排列,其中,每行的第8位用于奇偶校验。在DES加密算法中,子密钥获取过程中,DES经过