DES算法把64位的明文输入块变为64位的密文输出块,它所使用的密钥也是64位,首先,DES把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每部分各长32位,并进行前后置换(输入的第58位换到第一位,第50位换到第2位,依此类推,最后一位是原来的第7位),最终由L0输出左32位,R0输出右32位,根据这个法则经过16次迭代运算后,得到L16、R16,将此作为输入,进行与初始置换相反的逆置换,即得到密文输出。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密的数据;Mode为DES的工作方式,有两种:加密或解密,如果Mode为加密,则用Key去把数据Data进行加密,生成Data的密码形式作为DES的输出结果;如Mode为解密,则用Key去把密码形式的数据Data解密,还原为Data的明码形式作为DES的输出结果。在使用DES时,双方预先约定使用的”密码”即Key,然后用Key去加密数据;接收方得到密文后使用同样的Key解密得到原数据,这样便实现了安全性较高的数据传输。DES加密算法的过程1对输入的密钥进行变换。用户的64bit密钥,其中第8,16,24,32,40,48,56,64位是校验位,使得每个密钥都有奇数个1。所以密钥事实上是56位。对这56位密钥进行如下表的换位。57494133251791585042342618102595143352719113605244366355473931231576254463830221466153453729211352820124表的意思是第57位移到第1位,49位移到第2位,第以此类推。变换后得到56bit数据,将它分成两部分,C028D028。2计算16个子密钥,计算方法Ci28Di28为对前一个Ci128Di128做循环左移操作。16次的左移位数如下表112345671222228910111213141516(第i次212222221左移位数
3串联计算出来的Ci28Di28得到56位,然后对它进行如下变换得到48位子密钥Ki481417112415328156211023191242681672720132415231374755304051453348444939563453464250362932表的意思是第14位移到第1位,第17位移到第2位,以此类推。在此过程中,发现第9,18,22,25,35,38,43,54位丢弃。
f4对64bit的明文输入进行换位变换。换位表如下58501234261810260524436282012462544638302214664564840322416857494133251791595143352r