16轮迭代运算
64bits明文 图5-2 DES算法框图
初始置换[10]是将输入的64位明文分为8个数组,每一组包括8位,按1至64编号。在DES算法中,将56位的密钥和分组后的64位明文组按替代或交换的方法形成密文组,即用56位密钥来加密64位数据,其密钥的长度为56位,明文则按64位来进行分组[17]。
DES首先对输入的64位明文进行一次初始置换 (图5-3),来打乱原来的次序。
1 2 3 ???????????????????????????64
输入明文(64bits)
58 60 62 64 57 59 61 63
50 52 54 56 49 51 53 55 42 44 46 48 41 43 45 47 34 36 38 40 33 35 37 39 26 28 30 32 25 27 29 31 18 20 22 24 17 19 21 23 10 12 14 16 9 11 13 15 2 4 6 8 1 3 5 7
1 2 3 ?????????????????????????63 64
置换后的数据
1 2 3 ??????????32 33 34??????????63 64
图5-3 初始置换
即将第倒是第1位换到第7位,第倒数第二位换到第6位??,由此类推,第58位换为第1位。
对置换后的分成左右两部分,左边记为,右边记为。对施行在密钥控制下的变换,结果记为,令
,
, (5-2-1)
对施行和同样的过程得,如此循环16次得。再对64位数字进行初始置换的逆变换(图5-4),即得密文。
1 2 3 ?????????????????????63 64
64bits数据
1 2 3 ?????????????????????63 64
密文
图5-4 初始逆置换
在16次加密后并未交换,而是直接将作为的输入,这样就使得DES的解密和加密完全一样,所以以上过程只需输入密文,即可得明文[18]。如因为第1位经过初始置换后,,逆置换就是要将第40位换回到第1位[18]。
初始置换及其逆置换其实毫无密码学意义,这是由于置换前后其二者一一对应关系是已知的。它们的作用是为了打乱原来输入明文的ASCⅡ码值的关系,并且将原来明文的第8 ,??,64位(校验位)变成输出的一个字节[18]。
5.2.2 函数
我们把从到的变换过程称作一轮加密,所以DES要经过16轮迭代(加密)。和是第次迭代结果的左右两个部分,每轮变换全部相同,只是数据不同,这里称为DES的函数,其中为32位输入,为48位输入,在第轮,,为由64位的初始密钥(也称种子密钥)导出的第轮子密钥。为32位数字。
的计算过程如下[10]:
将经过一个扩展运算(如图5-5)后为48位,记为。计算,对进行代换,此代换由8个代换盒构成,这就是我们即将讨论的S-盒,每个S-盒都有6个输入和4个输出[17],将依次分为8组,每组6位,记。
1 2 ??????????????????32
32bits
1 2 ??????????????????32
48bits
图5-5 扩展运算
其中作为第个-盒的输入,的输出为,就是代换的输出,所以代换是一个48位的输入,32位输出的选择压缩运算,将结果再进行置换(如图5-6),