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
详解九章算法的内容介绍