求DES加密算法详解拜托了各位 谢谢

如题所述

第1个回答  2014-06-19
DES加密算法是分组加密算法,明文以64位为单位分成块。64位数据在64位密钥的控制下,经过初始变换后,进行16轮加密迭代:64位数据被分成左右两半部分,每部分32位,密钥与右半部分相结合,然后再与左半部分相结合,结果作为新的右半部分;结合前的右半部分作为新的左半部分。这一系列步骤组成一轮。这种轮换要重复16次。最后一轮之后,再进行初始置换的逆置换,就得到了64位的密文。 DES的加密过程可分为加密处理,加密变换和子密钥生成几个部分组成。 1.加密处理过程 (1)初始变换。加密处理首先要对64位的明文按表1所示的初始换位表IP进行变换。表中的数值表示输入位被置换后的新位置。例如输入的第58位,在输出的时候被置换到第1位;输入的是第7位,在输出时被置换到第64位。 (2)加密处理。上述换位处理的输出,中间要经过16轮加密变换。初始换位的64位的输出作为下一次的输入,将64位分为左、右两个32位,分别记为L0和R0,从L0、R0到L16、R16,共进行16轮加密变换。其中,经过n轮处理后的点左右32位分别为Ln和Rn,则可做如下定义: Ln=Rn-1 Rn=Ln-1 其中,kn是向第n轮输入的48位的子密钥,Ln-1和Rn-1分别是第n-1轮的输出,f是Mangler函数。 (3)最后换位。进行16轮的加密变换之后,将L16和R16合成64位的数据,再按照表2所示的 最后换位表进行IP-1的换位,得到64位的密文,这就是DES算法加密的结果。 2.加密变换过程 通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右半部分通过异或操作和48位的密钥结合,并分成6位的8个分组,通过8个S-盒将这48位替代成新的32位数据,再将其置换一次。这些S-盒输入6位,输出4位。 一个S盒中具有4种替换表(行号用0、1、2、3表示),通过输入的6位的开头和末尾两位选定行,然后按选定的替换表将输入的6位的中间4位进行替代,例如:当向S1输入011011时,开头和结尾的组合是01,所以选中编号为1的替代表,根据中间4位1101,选定第13列,查找表中第1行第13列所示的值为5,即输出0101,这4位就是经过替代后的值。按此进行,输出32位,再按照表4 单纯换位表P进行变换,这样就完成了f(R,K)的变换 3.子密钥生成过程 钥通常表示为64位的自然数,首先通过压缩换位PC-1去掉每个字节的第8位,用作奇偶校验,因此,密钥去掉第8、16、24……64位减至56位,所以实际密钥长度为56位,而每轮要生成48位的子密钥。 输入的64位密钥,首先通过压缩换位得到56位的密钥,每层分成两部分,上部分28位为C0,下部分为D0。C0和D0依次进行循环左移操作生成了C1和D1,将C1和D1合成56位,再通过压缩换位PC-2输出48位的子密钥K1,再将C1和D1进行循环左移和PC-2压缩换位,得到子密钥K2......以此类推,得到16个子密钥。密钥压缩换位表如表6所示。在产生子密钥的过程中,L1、L2、L9、L16是循环左移1位,其余都是左移2位,左移次数如表7所示。 详细信息见 http://www.studa.net/yingyong/100126/11085967.html本回答被提问者采纳

求DES加密算法详解拜托了各位 谢谢
进行16轮的加密变换之后,将L16和R16合成64位的数据,再按照表2所示的 最后换位表进行IP-1的换位,得到64位的密文,这就是DES算法加密的结果。 2.加密变换过程 通过重复某些位将32位的右半部分按照扩展表3扩展换位表扩展为48位,而56位的密钥先移位然后通过选择其中的某些位减少至48位,48位的右...

【技术分享】DES算法详解
技术详解:深入解析DES加密算法 DES算法,全称Data Encryption Standard,是IBM公司开发的一种对称加密技术,1977年由美国国家标准局推荐作为非机要部门的标准加密手段。DES以64位为一组进行加密,每组数据使用56位密钥,其中一位用于奇偶校验,实际可用的密钥长度为56位。加密过程涉及关键步骤:首先,利用48位...

求des C#算法
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);MemoryStream ms = new MemoryStream();CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);cs.Write(inputByteArray, 0, inputByteArray.Length);cs.FlushFinalBlock()...

有关DES算法的一道证明题
最后,把L16R16交换顺序,得到R16L16,再经过一次逆置换FP(R16L16),可以得到64比特的密文C,所以C=FP(R16L16)。我们知道,DES的解密只需将16个子密钥以相反的顺序加入到轮函数中,重复加密的步骤即可。 现在我们要证明DES加密和解密的算法是完全一样,只是子密钥使用的顺序相反。也就是说,我们要证明...

求DES密码值
生成与进行第i次迭代加密的数据进行按位异或的48位使用密钥: 1.1.5迭代 DES算法密钥生成需要进行16次迭代,在完成16次迭代前,循环执行1.1.3-1.1.4步. 最终形成16套加密密钥:key[0] , key[1] , key[2] ,…. key[14] , key[15] . 1. 2 数据的加密操作 1.2.1 取得数据 把明文数据分成64位的数据...

求一个用c语言写的DES加密算法~~
\/\/ 方式一:调用默认的des实现方法des_csp.des des = des.create();\/\/ 方式二:直接使用des_csp()实现des的实体 \/\/des_csp des = new des_csp();\/\/ 初始化des加密的密钥和一个随机的、8比特的初始化向量(iv)byte iv = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xcd, 0xef};de...

对称加密与非对称加密算法原理详解(对称加密篇)
DES算法以64位明文分组,初始置换后,将密钥压缩为56位,通过移位和置换操作生成子密钥,再与明文进行异或加密。具体过程包括初始数据的置换,密钥的生成与变换,以及S盒和P盒替换。加密时,明文通过连续16轮加密,最后进行解密,与加密过程相反。AES加密算法更为复杂,以128位为一组进行加密,包括密钥轮询、...

DES加密算法的破解是怎么回事?
破解一个分组密码算法,是指根据掌握的信息,求出密钥。这里,破译者也许只有密文,也许有了一定数量的明文-密文对,或者有了加密机,输入任意的明文,都可以得到密文,总之,破译的目标是“找到密钥”。穷举法就是对56比特的所有可能密钥进行穷举,一个一个试,直到找出正确密钥。

des加密算法(c\/c++)
des加密算法(c\/c++) 要完整程序,用C或C++实现.包括所必须的头文件及主体部分,复制粘贴直接能执行不要有错误.经测试有效才给分.看清楚要求再回答!!!楼下的我粘贴过去编译出来N多个错误,拜托各位给我答案的... 要完整程序,用C或C++实现.包括所必须的头文件及主体部分,复制粘贴直接能执行不要有错误.经测试有效...

【密码学系列】|| 详解密码学的多重DES算法...
在DES面临挑战时,多重DES算法应运而生。二重DES通过将两个DES加密过程串联,将密钥长度从56位增加至112位,显著提升了安全性。中间相遇攻击表明,通过两组已知明密文对,可有效猜测出正确的密钥,但这并未成为二重DES的致命弱点。三重DES是多重DES的进一步发展,通过使用三个密钥进行三次加密以抵抗中途...

相似回答