首页 > 编程知识 正文

des是一种什么加密算法,des为何加解密算法相同

时间:2023-05-04 22:27:51 阅读:168450 作者:4497

文章目录DES加密算法具体步骤算法背景算法说明算法流程图初始置换IP子密钥生成PC_1表置换2.16个块C~n~和D~n~3 .得到16个子密钥的k循环函数f函数1

DES加密算法的具体步骤算法背景

DES都称为数据加密标准,即数据加密标准,是一种使用密钥加密的分块算法。 1977年被美国联邦政府国家标准局确定为联邦数据处理标准(FIPS ),获准用于非机密级政府通信,此后在国际上广泛普及。 请注意,在某些文献中,作为算法的DES称为数据加密算法(Data Encryption Algorithm,DEA ),它与作为标准的DES相区别。 但是,由于发现DES非常容易受到强力攻击,因此DES的普及度略有下降。

算法描述DES算法的明文分组长度为64比特,密钥长度也为64比特,但是实际的密钥长度只有56比特,其中第8、16、24、32、40、48、56、64比特是奇偶校验位,密钥的生成

本算法流程图的原始文档赋予的算法流程图如下。

简化流程图:

图片请点击这里~

初始置换IP使用初始置换IP(initialpermutation )进行置换明文x的处理,打乱原来的顺序,得到顺序混乱的64比特的明文组。

3359 en.Wikipedia.org/wiki/des _ supplementary _ material

IP Table:

IP表的意思为:将X中的58位数据放在转换后生成的X’表的第1位,X中的第50位放在X’的第2位,X中的42位放在第3位…X中的第7位放在X’的最后一位。

例如,初始的x是0101001101100100101001100110010011001100110010010010001000100100100100010001

如果用初始替换IP表进行替换,则为10111100101001001100100100110011001100000011111111111100000000000000000000000001。

进行IP置换后,将x分为左右两部分,左边标记为L0,右边标记为R0:

l0=1011110010010011011011001001001001001001100111

r0=000000001111010000000000000000000001

然后进入圈函数。

子密钥生成为DES,加密者输入的明文和密钥均为64比特,其中只有56比特是有效的比特数(因为奇偶校验比特为8比特)。 但是,由于DES加密过程具有16个循环的循环函数,其中需要16个密钥,因此将扩展该56位密钥以生成16个48位子密钥。 步骤如下。

用PC_1表替换

PC_1置换的主要步骤和初始IP置换一样,PC_1置换的目的是为了去掉64 bit密钥k中的8个奇偶校验位,并对其余56位打乱排列。置换完成后,同样将密钥分成左右两部分各28 bit,左边为C0, 右边为D0。

例如,原始密钥: k=0001001100100100101010101010110110110110110110110011001110011111111111111111001

PC_1置换后: k=1110011001001010101101101101101010101100110011001100110011001110011100110011111100111001110111111000011110111111110111111111111111111111111111111111111111111111

分为左右两个部分C0和D0 :

c0=111100001100110010101010101010101010111

d0=010101011001100110011001100011000000110000110001111

2 .创建16个块Cn和Dn,对于1=n=16,第n次分别将Cn-1和Dn-1循环左移。 移位的位数为1位或2位,取决于n的值,n=1、2、9、16时向左移位1位,其他向左移位2位。 因此,表如下。

用n12345678910111213141516左移位数1122222212222221进行移位后,由C1得到C16,D1得到D16。

3 .获得16个子密钥k

Kn=PC_2(CnDn ),PC_2是固定替换,用于从CnDn中选择48位作为子密钥kn。 CnDn表示从左到右将dn排在cn之后,CnDn的长度为56 bit。

现在将生成所有子密钥并进入循环函数。

循环函数将替换IP的明文重复16次,每个循环使用以前计算的16个48位密钥之一。

函数f

加密函数f是整个DES算法的核心。 如上图所示,函数f将长度为32的比特串a=r (32比特)作为第1输入,将长度为48的比特串自变量j=k )作为48比特)

作为第2个输入,产生的输出是长度为32的比特串。

1. 位选择函数E

对第一个变元A,由给定的选择扩展函数可以将其扩展为48 比特串E(A)。

2. S盒代换

将 E(A) 和 K 进行异或操作后,把比特串分为8组,一组 6 bit,分别对每一组进行S盒代换。经过S盒,每一组由 6 bit 缩减为 4 bit。

S盒的行号从0到3,列号从0到15。

代换的过程如下,例如需要代换的第一组数据输入为011001,则第一位0和最后一位1组合成的01即为行号,中间的1101为列号,第一组数据对应S1,01转化成10进制为1,1101转化成10进制为13,因此S1中的第1行第13列就为对应的输出,查表得5,转化成2进制为0101。因此0101就为最终的4位输出。

3. P盒代换

P为固定置换,将经过S盒变换得到的32 bit进行一个置换操作。

至此,得到F函数的最终输出。

轮函数步骤

令+表示XOR加法 (模2诸位加法) ,对于第n轮有:

进行16轮,得到R16和L16。

逆初始置换IP-1

轮函数最后一步的左边32 bit和右边32 bit合成64 bit,再进行逆初始置换,得到最终密文。

IP-1 Table:

DES解密

DES的解密过程与加密过程相同,只不过在16次迭代中使用子密钥的次序正好相反。解密时,第1次迭代使用子密钥K16,第2次使用子密钥K15,以此类推…,第16次使用子密钥K1。

三重DES

DES的密钥长度被证明已经不能满足当前安全的要求,为了增强DES安全性,人们开始提出针对DES的各种改进方案,一种简单的方法就是使用多重DES,其中三重DES应用最广泛。三重DES就是使用3次DES运算,密钥长度增加到112 bit或168 bit,可以有效克服DES面临的穷举攻击,但实现速度更慢。因此,三重DES只是在DES变得不安全的情况下一种临时解决方案。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。