




已阅读5页,还剩12页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
DES数据加密算法的原理及C+实现摘 要: DES数据加密算法作为最著名的对称密钥加密算法,在计算机密码学及计算机数据通信的发展过程中起着重要的作用。本篇论文分析了DES数据加密算法的基本原理,即如何使56位密钥迭代生成16个子密钥,并用这16个子密钥对64位数据块进行加密使之变为密文,最后用C+语言对其做出实现。DES算法在很长一段时间内具有较高的强壮性,为我们进行一般的计算机数据传输活动提供了安全保障。关键词:DES算法;密钥;加密;明文;密文1 前言 信息安全技术是一门综合的学科,它涉及信息论、计算机科学和密码学等多方面知识,它的主要任务是研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。其中,信息安全的核心是密码技术。1973年美国标准局NBS(National Bureau of Standards)征求国家密码标准方案,IBM就提交了其Tuchman-Meyer项目的结果。这是当时提出的最好的方法。因而在1977年被选为数据加密标准。这就是著名的DES加密算法。2 DES数据加密标准算法 2.1 网络信息安全与数据加密技术概述 网络技术的飞速发展,网络安全问题越发显得重要。数据保密变换,或密码技术,是对计算机信息进行保护的最实用和最可靠的方法,它是网络安全技术中的核心技术。信息技术的飞速发展,使人们的生活面貌发生了很大的改变,同时信息技术也促进了社会的发展。互联网是一个面向大众的开放系统,对于信息的保密措施和系统的安全性考虑得并不完备,因此引起的网络安全问题也就日益严重。如何保护计算机信息的内容,也即信息内容的保密问题显得越来越重要。从本质上看,网络安全就是网络上的信息安全。从广义上来说,凡是涉及到网络信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。信息安全的技术主要包括监控、扫描、检测、加密、认证、防攻击、防病毒以及审计等几个方面,其中加密技术是信息安全的核心技术,已经渗透到大部分安全产品之中,并正向芯片化方向发展。加密技术是一门古老而深奥的学科,它对一般人来说是陌生的,因为长期以来,它只在很少的范围内,如军事、外交、情报等部门使用。计算机加密技术是研究计算机信息加密、解密及其变换的科学,是数学和计算机的交叉学科,也是一门新兴的学科。在国外,它已成为计算机安全主要的研究方向,也是计算机安全课程教学中的主要内容。2.1.1 数据加密的起因 当今网络社会选择加密已是别无选择,其一是我们知道在互联网上进行文件传输、电子邮件商务往来时存在许多不安全因素,特别是对于一些大公司和一些机密文件在网络上的传输。而且这种不安全性是互联网存在基础TCP/IP协议所固有的,包括一些基于TCP/IP的服务;另一方面,互联网给众多的商家带来了无限的商机,互联网把全世界连在了一起,走向互联网就意味着走向了世界,这对于无数商家无疑是梦寐以求的好事,特别是对于中小企业。为了解决这一对矛盾、为了能在安全的基础上打开这通向世界之门,我们只好选择了数据加密和基于加密技术的数字签名。 加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。一个简单的例子就是密码的传输,计算机密码极为重要,许多安全防护体系是基于密码的,密码的泄露在某种意义上来讲意味着其安全体系的全面崩溃。 通过网络进行登录时,所键入的密码以明文的形式被传输到服务器,而网络上的窃听是一件极为容易的事情,所以很有可能黑客会窃取用户的密码,如果是Root用户或Administrator用户,那后果将是极为严重的。 还有如果你公司在进行着某个招标项目的投标工作,工作人员通过电子邮件的方式把他们单位的标书发给招标单位,如果此时有另一位竞争对手从网络上窃取到你公司的标书,从中知道你公司投标的标的,那后果将是怎样,相信不用多说聪明的你也明白。 这样的例子实在是太多了,解决上述难题的方案就是加密,加密后的口令即使被黑客获得也是不可读的,加密后的标书没有收件人的私钥也就无法解开,标书成为一大堆无任何实际意义的乱码。总之无论是单位还是个人在某种意义上来说加密都成为当今网络社会进行文件或邮件安全传输的时代象征! 数字签名就是基于加密技术的,它的作用就是用来确定用户是否是真实的。应用最多的还是电子邮件,如当用户收到一封电子邮件时,邮件上面标有发信人的姓名和信箱地址,很多人可能会简单地认为发信人就是信上说明的那个人,但实际上伪造一封电子邮件对于一个通常人来说是极为容易的事。在这种情况下,就要用到加密技术基础上的数字签名,用它来确认发信人身份的真实性。 类似数字签名技术的还有一种身份认证技术,有些站点提供入站FTP和WWW服务,当然用户通常接触的这类服务是匿名服务,用户的权力要受到限制,但也有这类服务不是匿名的,如某公司为了信息交流提供用户的合作伙伴非匿名的FTP服务,或开发小组把他们的Web网页上载到用户的WWW服务器上,现在的问题就是,用户如何确定正在访问用户的服务器的人就是用户认为的那个人,身份认证技术就是一个好的解决方案。 在这里需要强调一点的就是,文件加密其实不只用于电子邮件或网络上的文件传输,其实也可应用于静态的文件保护,如PIP软件就可以对磁盘、硬盘中的文件或文件夹进行加密,以防他人窃取其中的信息。 2.1.2 数据加密的基本概念 密码是实现秘密通讯的主要手段,是隐蔽语言、文字、图像的特种符号。凡是用特种符号按照通讯双方约定的方法把电文的原形隐蔽起来,不为第三者所识别的通讯方式为密码通讯。在计算机通讯中,采用密码技术将信息隐蔽起来,再将隐蔽后的信息传输出去,使信息在传输过程中即使被窃取或截获,窃取者也不能了解信息的内容,从而保证信息传输的安全。任何一个加密系统至少包括下面四个组成部分: 明文,即未加密的报文; 密文,即加密后的报文; 加密解密设备或算法; 加密解密的密钥。数据加密过程就是通过加密系统把原始的数字信息(明文),按照加密算法变换成与明文完全不同的数字信息(密文)的过程,如图2-1所示: 加密密钥 解密密钥明文 传输 明文加密解密密文图2-1 数据加密过程在保障信息安全各种功能特性的诸多技术中,密码技术是信息安全的核心和关键技术。通过数据加密技术,可以在一定程度上提高数据传输的安全性,保证传输数据的完整性。在数据加密系统中,密钥控制加密和解密过程,一个加密系统的全部安全性是基于密钥和算法,所以加密系统的密钥管理是一个非常重要的问题。数据加密技术主要分为数据传输加密和数据存储加密。数据传输加密技术主要是对传输中的数据流进行加密,常用的有: 链路加密链路加密是指传输数据仅在物理层前的数据链路层进行加密,不考虑信源和信宿,它用于保护通信节点间的数据,接收方是传送路径上的各台节点机,信息在每台节点机内都要被解密和再加密,依次进行,直至达到目的地。 节点加密与链路加密类似的节点加密方法,是在节点处采用一个与节点机相连的密码装置,密文在该装置中被解密并被重新加密,明文不通过节点机,避免了链路加密节点处易受功击的缺点。 端到端加密端到端加密是为数据从一端到另一端提供的加密方式。数据在发送端被加密,在接收端解密,中间节点处不以明文的形式出现。端到端加密是在应用层完成的。在端到端加密中,除报头外的报文均以密文的形式贯穿于全部传输过程,只是在发送端和接收端才有加、解密时,报文和报头两者均须加密,因此,不需要有密码设备。端到端加密同链路加密相比,可减少密码设备的数量。信息是由报头和报文组成的,报文为要传送的信息,报头为路由选择信息,由于网络传输中要涉及到路由选择,在链路加密时,报文和报头两者均须加密。而在端到端加密时,由于通道上的每一个中间节点虽不对报文解密,但为将报文传送到目的地,必须检查路由选择信息,因此,只能加密报文,而不能对报头进行加密。这样就容易被某些恶意肇事者分析发觉,并从中获取某些敏感信息。链路加密对用户来说比较容易,使用的密钥较少,而端到端加密比较灵活,对用户可见。在对链路加密中各节点安全状况不放心的情况下也可使用端到端加密方式。2.1.3 数据加密的标准 1973年,美国国家标准局(NBS)在认识到建立数据保护标准既明显又急迫需要的情况下,开始征集联邦数据加密标准的方案。1975年3月17日,NBS公布了IBM公司提供的密码算法,以标准建议的形式在全国范围内征求意见。经过两年多的公开讨论之后,1977年7月15日,NBS宣布接受这个建议,作为联邦信息处理标准46号,数据加密标准(Data Encryption Standard),即DES正式颁布,供商业界和非国防性政府部门使用。DES是分组乘积密码,它用56位密钥(密钥总长64位,其中8位是奇偶校验位)将64位的明文转换为64位的密文。2.2 DES算法原理DES算法是一种用56位密钥来加密64位数据的对称密钥算法。DES 密码算法要达到的目的主要为以下四点: 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改; 具有相当高的复杂性,使得破译的开销超过可能获得的利益,同时又要便于理解和掌握; DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础; 实现经济,运行有效,并且适用于多种完全不同的应用。2.2.1 DES 算法简介 DES算法全称为Data Encryption Standard,即数据加密标准算法,它是IBM公司于1975年研究成功并公开发表的。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密。 DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其算法主要分为两步:初始置换和逆初始置换。2.2.2 DES算法加密过程分析DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,其变换后64位数据在原数据块中所处位置如下所示(按变换后位顺序排列):Initial Permutation(IP)58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,即将输入的第58位换到第一位,第50位换到第2位,依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的左32位,R0 是右32位,例:设置换前的输入值为D1D2D3D64,则经过初始置换后的结果为:L0=D58D50D8;R0=D57D49D7。经过16次迭代运算后,得到L16、R16,将此作为输入,进行逆置换,即得到密文输出。逆置换正好是初始置换的逆运算,例如,第1位经过初始置换后,处于第40位,而通过逆置换,又将第40位换回到第1位,其逆置换规则如下表所示,即: Final Permutation(IP-1) 40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31, 38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29, 36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27, 34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25,放大换位表,即:Expansion (E)32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11,12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1,单纯换位表,即:Permutation P16,7,20,21,29,12,28,17,1,15,23,26,5,18,31,10,2,8,24,14,32,27, 3, 9,19,13,30,6,22,11, 4,25,Si(i=1,28)为选择函数,其功能是把6bit数据变为4bit数据。下面给出选择函数Si(i=1,28)的功能表:选择函数SiS1: 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,3,10,5,0, 15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,S2: 15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10, 3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5, 0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15, 13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,S3: 10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8, 13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1, 13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7, 1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,S4: 7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15, 13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9, 10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4, 3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,S5: 2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9, 14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6, 4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14, 11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,S6:12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,S7: 4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1, 13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6, 1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2, 6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,S8: 13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7, 1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2, 7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8, 2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,在此以S1为例说明其功能,我们可以看到:在S1中,共有4行数据,命名为0,1、2、3行;每行有16列,命名为0、1、2、3、 14、15列。现设输入为: DD1D2D3D4D5D6,令:列D2D3D4D5,行D1D6。然后在S1表中查得对应的数,以4位二进制表示,此即为选择函数S1的输出。下面给出子密钥Ki(48bit)的生成算法:初始Key值为64位,但DES算法规定,其中第8、16、64位是奇偶校验位,不参与DES运算。故Key 实际可用位数便只有56位。即:经过缩小选择换位表1的变换后,Key 的位数由64 位变成了56位,此56位分为C0、D0两部分,各28位,然后分别进行第1次循环左移,得到C1、D1,将C1(28位)、D1(28位)合并得到56位,再经过缩小选择换位2,从而便得到了密钥K0(48位)。依此类推,便可得到K1、K2、K15,不过需要注意的是,16次循环左移对应的左移位数要依据下述规则进行:循环左移位数为:1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1以上介绍了DES算法的加密过程。DES算法的解密过程是一样的,区别仅仅在于第一次迭代时用子密钥K15,第二次K14、,最后一次用K0,算法本身并没有任何变化。3 DES加密算法的实现过程3.1 DES加密算法的软件实现步骤及C+实现代码 DES算法处理的数据对象是一组64比特的明文串。设该明文串为m=m1m2m64 (mi=0或1)。明文串经过64比特的密钥K来加密,最后生成长度为64比特的密文。其流程图如图3-1所示:在3-1流程图中,函数f指以下四步操作:在每一轮中,密钥位移位,然后再从密钥的56位中选出48位。通过一个扩展置换将数据的右半部分扩展成48位,并通过一个异或操作替代成新的32位数据,再将其置换一次。其中的IP与IP-1为2.2.2中所述。而K1K16为经过16次迭代运算后生成的子密钥。图3-1 DES加密算法流程图3.1.1 处理密钥从用户处获取64位密钥,其中每一个字节第8位为奇偶校验位,为使密钥有正确的奇偶校验,每一字节中值为“1”的二进制位应为奇数个。在密钥计算流程中,首先应对64位密钥进行变换:抛弃由1获取的原64位密钥中的所有校验位,密钥变为56位,重排密钥顺序,使原64位密钥的第57位变为现在的第1位,原49位变为现在的第2位,下面为变换后的56密钥在原64位密钥中所处的位置:permuted choice 1(pc-1)57 49 41 33 25 17 91 58 50 42 34 26 1810 2 59 51 43 35 2719 11 3 60 52 44 3663 55 47 39 31 23 157 62 54 46 38 30 2214 6 61 53 45 37 2921 13 5 28 20 12 4将变换后的密钥等分成两部分,前28位记为C0,后28位记为D0。密钥分割完后,将进行子密钥的计算,共需要计算16次子密钥,从i=1开始,依次按下列步骤进行:分别对Ci-1和Di-1作1或2次循环左移来生成Ci和Di。共(16次),每次循环左移位数如2.2.2加密过程分析中所述的循环次数。然后,串联Ci,Di,得到一个56位数,并对此数作如下变换以产生48位子密钥ki。变换后48位密钥在原56位数中所处的位置如下(按变换后位顺序排列):Permuted Choice 2(PC-2)14 17 11 24 1 53 28 15 6 21 1023 19 12 4 26 816 7 27 20 13 241 52 31 37 47 5530 40 51 45 33 4844 49 39 56 34 5346 42 50 36 29 32按以上方法循环直到计算出K16。密钥处理及计算子密钥的C+程序代码如下:for(i=0;i8;i+) /将8字节密钥转换为64位字串 boolkeyi0=keyi.bits.bit8; boolkeyi1=keyi.bits.bit7; boolkeyi2=keyi.bits.bit6; boolkeyi3=keyi.bits.bit5; boolkeyi4=keyi.bits.bit4; boolkeyi5=keyi.bits.bit3; boolkeyi6=keyi.bits.bit2; boolkeyi7=keyi.bits.bit1; for(i=0;i56;i+) /根据PC-1进行变换成56字节,去掉奇偶校验位 midbooli=boolkeyi/8i%8; for(i=0;i56;i+) boolkeyi/7i%7=0; boolkeyi/7i%7=midbooli; for(i=0;i8;i+) booltempi7=boolkey0i; booltempi6=boolkey1i; booltempi5=boolkey2i; booltempi4=boolkey3i; booltempi3=boolkey4i; booltempi2=boolkey5i; booltempi1=boolkey6i; booltempi0=boolkey7i; for(i=0;i8;i+) temp=booltemp4i; booltemp4i=booltemp6i; booltemp6i=temp; booltemp70=booltemp34; booltemp71=booltemp35; booltemp72=booltemp36; booltemp73=booltemp37; for(time=1;time=16;time+) switch(time) case 3: case 4: case 5: case 6: case 7: case 8: case 10: case 11: case 12: case 13: case 14: case 15: shiftall(booltemp); default: shiftall(booltemp); break; for(i=0;i8;i+) for(j=0;j27) temp_int=temp_int+4; boolkeyij+2=booltemptemp_int/8temp_int%8; back=new union exchange8; for(i=0;i8;i+) backi.bits.bit8=0; backi.bits.bit7=0; backi.bits.bit6=boolkeyi2; backi.bits.bit5=boolkeyi3; backi.bits.bit4=boolkeyi4; backi.bits.bit3=boolkeyi5; backi.bits.bit2=boolkeyi6; backi.bits.bit1=boolkeyi7; subkeytime-1i=backi.in; void shiftall(bool booltemp88) /实现变换后的56位密钥在原64位密钥中的重新排列 int i; booltemp34=booltemp00; for(i=0;i63;i+) booltempi/8i%8=booltemp(i+1)/8(i+1)%8; booltemp77=booltemp37; 3.1.2 处理64位数据块将数据块分成64位的数据块,不够64位的以适当的方式填补。对64位数据块作如下变换,使变换后64位数据在原数据块中所处位置如2.2.2 中的Initial Permutation(IP)所示。将变换后的数据块等分成前后两部分,前32位记为L0,后32位记为R0。然后用16个子密钥对数据块加密,从i=1开始。对32位数据块Ri-1进行扩展,变换后48位数据在原数据块中所处的位置如2.2.2 中Expansion (E)所示,然后用ERi-1与Ki作异或运算。并将异或所得结果(48位块)分成8个6位块。1到6位为B1,7到12位为B243到48位为B8。从j=1开始,用S密箱里的值替换Bj,按以下步骤进行(S密箱里的值为4位数,共8个S密箱): 取出Bj的第1和第6位串联起来成一个2位数,记为m。m即是S密箱里用来替换Bj的数所在的列数。 取出Bj的第2至第5位串联起来成一个4位数,记为n。n即是S密箱里用来替换Bj的数所在的行数。 用S密箱里的值替换Bj。如此循环直至8个数据块被替换。替换完毕后则把B1至B8顺序串联起来得到一个32位数,对这个数做变换,使变换后32位数据在原数据块中所处的位置如2.2.2中Permutation P所示(按变换后位顺序排列)。把得到的结果与Li-1作异或运算。将计算结果赋给Ri。并把Ri-1的值赋给Li。如此循环,直到K16也被用到。最后将R16和R16顺序串联起来得到一个64位数,并对这个数实施2.2.2中Final Permutation所示的逆变换。即得到最终的密文。利用密钥来加密64位数据块的C+代码如下:for(i=0;i8;i+) /将8字节数据转换为64位字串 boolplaintexti0=plaintexti.bits.bit8; boolplaintexti1=plaintexti.bits.bit7; boolplaintexti2=plaintexti.bits.bit6; boolplaintexti3=plaintexti.bits.bit5; boolplaintexti4=plaintexti.bits.bit4; boolplaintexti5=plaintexti.bits.bit3; boolplaintexti6=plaintexti.bits.bit2; boolplaintexti7=plaintexti.bits.bit1; for(time=0;time15;time+) /循环16次,用密钥加密数据 for(i=0;i4;i+) /将32位数据块扩展为48位数据块 boolplaintexti*20=0; boolplaintexti*21=0; boolplaintexti*2+10=0; boolplaintexti*2+11=0; boolplaintexti*23=booltempi+40; boolplaintexti*24=booltempi+41; boolplaintexti*25=booltempi+42; boolplaintexti*26=booltempi+43; boolplaintexti*2+13=booltempi+44; boolplaintexti*2+14=booltempi+45; boolplaintexti*2+15=booltempi+46; boolplaintexti*2+16=booltempi+47; boolplaintexti*22=booltempi+4-17; boolplaintexti*2+12=booltempi+43; boolplaintexti*27=booltempi+44; if(i!=3) boolplaintexti*2+17=booltempi+4+10; boolplaintext02=booltemp77; boolplaintext77=booltemp40; back=new union exchange8; for(i=0;i8;i+) /将扩展后的明文与密钥做异或运算 backi.in=subkeytimei; backi.bits.bit6=backi.bits.bit6boolplaintexti2; backi.bits.bit5=backi.bits.bit5boolplaintexti3; backi.bits.bit4=backi.bits.bit4boolplaintexti4; backi.bits.bit3=backi.bits.bit3boolplaintexti5; backi.bits.bit2=backi.bits.bit2boolplaintexti6; backi.bits.bit1=backi.bits.bit1boolplaintexti7; for(i=0;i4;i+) /把B1至B8顺序串联起来得到一个32位数,并对其做P置换 ptempi0=backi*2.bits.bit4; ptempi1=backi*2.bits.bit3; ptempi2=backi*2.bits.bit2; ptempi3=backi*2.bits.bit1; ptempi4=backi*2+1.bits.bit4; ptempi5=backi*2+1.bits.bit3; ptempi6=backi*2+1.bits.bit2; ptempi7=backi*2+1.bits.bit1; for(i=0;i4;i+) for(j=0;j8;j+) temp32ij=booltempij; booltempij=booltempi+4j; for(i=0;i4;i+) for(j=0;j8;j+) temp_int=pij-1; pppij=ptemptemp_int/8temp_int%8; for(i=0;i4;i+) /将得到的结果与Li-1做异或运算 for(j=0;j8;j+) booltempi+4j=pppijtemp32ij; for(i=0;i4;i+) for(j=0;j8;j+) temp32ij=booltempij; booltempij=booltempi+4j; booltempi+4j=temp32ij; for(i=0;i8;i+) boolplaintext7-i0=booltemp4i; boolplaintext7-i1=booltemp0i; boolplaintext7-i2=booltemp5i; boolplaintext7-i3=booltemp1i; boolplaintext7-i4=booltemp6i; boolplaintext7-i5=booltemp2i; boolplaintext7-i6=booltemp7i; boolplaintext7-i7=booltemp3
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025企业电子产品购销合同
- 2025聘用合同书(参考文本适用于返聘人员)
- 2025酒店股权转让合同范本
- 浙江省宁波市镇海中学浙教版高中信息技术教学设计:Photoshop制作贺卡
- 第8课 体验活字印刷说课稿-2023-2024学年小学劳动六年级下册川民版《劳动教育》
- 甘肃公考真题2025
- 财务报表的格式设置与公式定义说课稿-2025-2026学年中职专业课-会计信息化-财经类-财经商贸大类
- 淄博事业单位笔试真题2025
- 五指山事业单位笔试真题2025
- 阿克苏事业单位笔试真题2025
- 浴室工程施工组织设计方案
- 2024年秋九年级化学上册 第3单元 物质构成的奥秘 课题3 元素 第1课时 物质是由元素组成的说课稿 (新版)新人教版
- 微商基础培训课件
- ISO9001:2024版质量手册资料
- 2023-2024年社会工作者之初级社会综合能力考试题库
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- 民族宗教团日活动
- 新娘化妆相关知识考核试题及答案
- 食品生产监管能力大比武理论考试题及答案
- 二年级家长会课件下载
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
评论
0/150
提交评论