DES加密有两个输入:64位的明文,56位的密钥。
左半部分,可见明文的处理过程经过了3个阶段。首先,64位的明文经过初始置换IP而被重新排列。然后进行16轮相同函数的作用,每轮作用都有置换和替代。最后一轮迭代的输出有64位,它是输入明文和密钥的函数。其左半部分和右半部分互换产生预输出,最后预输出再被与初始置换IP互逆的置换IP^(-1)作用产生64位的密文。除了初始和末尾的置换,DES的结构与Feistel密码结构完全相同。
右半部分给出了使用56位密钥的过程。首先,必要经过一个置换后,再经过循环左移和一个置换分别得到各轮的子密钥Ki用于各轮的迭代。每轮的置换函数都一样,但是由于密钥的循环移位,使得各轮子密钥互不相同。
一轮加密的简图:
对于第i轮加密算法
对第i轮解密算法,有:
可知16轮函数作用中,解密算法为加密算法的逆。
密文的处理过程经过了3个阶段。首先,64位的密文经过被与初始置换IP互逆的置换IP^(-1)作用产生64位输出,该输出左半部分和右半部分互换。然后进行16轮相同函数的作用,每轮作用都有置换和替代。最后一轮迭代的输出有64位,它是输入密文和密钥的函数。其经过初始置换IP产生64位明文。
使用56位密钥的过程。首先,必要经过一个置换后,再经过循环左移和一个置换分别得到各轮的子密钥K(17-i)用于各轮的迭代。每轮的置换函数都一样,但是由于密钥的循环移位,使得各轮子密钥互不相同。
因此,DES解密算法实际上是DES加密算法的逆。
参考了《密码编程学与网络安全——原理与实践》第六版P52-53以及PPT。