DES是一种对二元数据进行加密的算法,数据分组长度为64bit(8B),密文分组长度也是64bit,没有数据扩展。密钥长度为64bit,其中有8bit奇偶校验,有效密钥长度为56bit。DES的整个体制是公开的,系统的安全性全靠密钥的保密实现。算法主要包括初始置换IP、16轮迭代的乘积交换、逆初始置换IP-1及16个子密钥产生器。
1.初始置换口
初始置换IP可将64bit明文的位置进行置换,得到一个乱序的64bit明文组,而后分成左右两段,每段为32bit,以L0和R0表示,IP中各列元素位置号数相差为8,相当于将原明文各字节按列写出,各列比特经过偶采样和奇采样置换后,再对各行进行逆序,将阵中元素按行读出构成置换输出。
2.逆初始置换IP-1
拟初始置换IP-1可将16轮迭代后给出的64bit组进行置换,得到输出的密文组,输出为阵中元素按行读得的结果。IP和IP-1在密码意义上作用不大,因为输入组x与其输出组y=IP(x)[或IP-1(x)]是已知的一一对应关系。它们的作用在于打乱原来输入x的ASCII码字划分的关系,并将原来明文的校验位x8、x16、…、x64变成为IP输出的一个字节。
3.乘积变换
乘积变换是DES算法的核心部分。乘积变换将经过IP置换后的数据分成32bit的左右两组,在迭代过程中彼此左右交换位置。每次迭代时只对右边的32bit进行一系列的加密变换,在此轮迭代即将结束时,把左边的32bit与右边得到的32bit逐位模2相加,作为下一轮迭代时右边的段,并将原来右边未经变换的段直接送到左边的寄存器中作为下一轮迭代时左边的段。在每一轮迭代时,右边的段要经过选择扩展运算E、密钥加密运算、选择压缩运算S、置换运算P和左右混合运算。
4.选择扩展运算E
选择扩展运算下可将输入的32bitR i-1扩展成48bit的输出。令s表示E原输入数据比特的原下标,则E的输出是将原下标s=0或l(mod4)的各比特重复一次得到的,即对原第32、1、4、5、8、9、12、13、16、17、20、21、24、25、28、29各位都重复一次,实现数据扩展。将变换表中数据按行读出得到48bit输出。
5.密钥加密运算(www.xing528.com)
密钥加密运算可将子密钥产生器输出的48bit子密钥ki与选择扩展运算E输出的48bit数据按位模2相加。
6.选择压缩运算
选择压缩运算可将前面送来的48bit数据从左至右分成8组,每组为6bit。而后并行送入8个S盒,每个S盒为一非线性代换网络,有4个输出。
7.置换运算
置换运算可对S1~S8盒输出的32bit数据进行坐标置换,置换P输出的32bit数据与左边32bit即Ri-1逐位模2相加,所得到的32bit作为下一轮迭代用的右边的数字段,并将Ri-1并行送到左边的寄存器,作为下一轮迭代用的左边的数字段。
8.子密钥产生器
子密钥产生器可将64bit初始密钥经过置换选择PC1、循环移位置换、置换选择PC2给出每次迭代加密用的子密钥。在64bit初始密钥中有8位为校验位,其位置序号为8、16、32、48、56和64,其余56位为有效位,用于子密钥计算。将这56位送入置换选择PC1。经过坐标置换后分成两组,每组为28bit,分别送入C寄存器和D寄存器中。在各次迭代中,C和D寄存器分别将存数进行左循环移位置换。每次移位后,将C和D寄存器原存数送给置换选择PC2,置换选择PC2将C中第9、18、22、25位和D中第7、9、15、26位删去,并将其余数字置换位置后送出48bit数字作为第Z次迭代时所用的子密钥。至此,我们已将DES算法的基本构成做了介绍,加密过程可归结如下:令IP表示初始置换,KS表示密钥运算,Z为迭代次数变量,KEY为64bit密钥,f为加密函数,0表示逐位模2求和。
DES地出现在密码学史上是个创举。以前任何设计者对于密码体制细节都是严加保密的,而DES则公开发表,任人测试、研究和分析,可随意制作DES的芯片和以DES为基础的保密设备。DES的安全性完全依赖于所用的密钥。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。