DES算法分析
DES通过密钥对64位的二进制数据进行加密,把64位明文信息加密成64位密文信息,DES的加密过程可以表示成=。DES加密的流程图如图3-1所示。
3.1 生成密钥
从用户处取得一个64位长的密码口令key,key=k1…k64,去掉能被8整除的位,剩下的56位作为输入密钥。经过P1置换后分为两个28位数据块C和D。可表示为:
P1(K)=,其中
C D=
经过密钥置换表的变换后,Key的位数由64位变成了56位,此56位分为C0、D0两部分,各28位,然后分别进行第一次循环左移,得到C1、D1,将C1(28位)、D1(28位)合并得到56位,再根据P2压缩置换表进行压缩置换,从而便得到了密钥K0(48位)。依次类推,便可得到K1、K2…K15。需要注意的是,16次循环左移对应的左移位数要依据表3-1所示的规则进行。
表3-1循环左移规则表
轮数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
转移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
3.2 初始置换
把明文数据分成64位的数据块,不够64位的以适当的方式补充,把输出分为和R0两部分,每部分各长32位,其置换规则如表3-3所示。即将输入的第58位换到第1位,第50位换到第2位…,依次类推,最后一位是原来的第7位,L0、R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位。
3.3 数据扩展
紧接初始置换,保持left不变,根据表3-4数据扩展表把right由32位扩展置换成48位。在数据扩展操作中,有些输入数据位(如第1、4、5、17、right=R32R1R2……R31R32R128、29、32……等数位)用了两次,因此数据得到了扩展。这样得到右半部分为: 把扩展后的48位right与第i次迭代生成的48位加密密钥进行按位异或操作(right(i)^= key[i])形成一个新的48位的right。right=R'1R'2R'3……R'47R'48。
图3-1 DES加密流程图
表3-2 P2压缩置换表
14 17 11 24 1 5 3 28
15 6 21 10 23 19 12 4
26 8 16 7 27 20 13 2
41 52 31 37 47 55 30 40
51 45 33 48 44 49 39 56
34 53 46 42 50 36 29 32
表3-3 初始置换(IP置换)
上一页 [1] [2] [3] [4] [5] 下一页
基于DES原理的数据加密器的实现 第4页下载如图片无法显示或论文不完整,请联系qq752018766