简介
DESData Encryption Standard的缩写,属于对称分组码算法,数据分组的长度为64比特。**长度为56比特(如果带有校验位则是64比特,每个8比特字节最后一个比特位是奇偶校验位)。奇偶校验位的值是前七个比特位的异或运算的结果取反(使用奇数校验),其结构如下:
算法流程
1、 整体加解密流程
由于加解密算法对称,即解密过程为加密的逆过程。
DES加密算法
2、加密整体过程
IPInitial Permutation,LxRx整体的64比特数,LR各位32比特。
DES加密算法
 
3、IPIP-1的向量表
在向量表中的数字表示第几个比特数,将输入的64比特根据向量表进行重新排序。
DES加密算法
4、16次循环运算
需要进行16次类似的运算,这种运算称为Feistel算法。其中⊕表示异或运算。运算的基本方法,Ki为**生成算法生成的子**,f(.)函数进行**和比特的运算。Li = Ri-1,Ri = Li-1f(Ri-1,Ki)
DES加密算法
DES加密算法
5、Ki生成方法
DES加密算法
Parity drop在进行校验位去除的时候,需要进行置换,向量如下(有些文档称为PC1 permuted choice PC1)
DES加密算法
Shift left每次左移一个或两个比特,注意使用的是循环左移,不同比特数移位情况如下
DES加密算法
Compress 是将56比特的**,生成48比特的过程,向量如下(有些文档称为PC2 permuted choice PC2)
DES加密算法
6、f(.)功能
E(Expansion)的功能是将32比特转换到48比特,而P是进行置换,S-Boxes48bits映射到32比特。
DES加密算法
理解上straight D-box处应该还有一次置换处理。
DES加密算法
P置换为32位到32位的置换处理,向量表格如下
DES加密算法
7、Expansion 32比特到48比特扩展
DES加密算法
同样置换向量为
DES加密算法
8、S-Box的处理48比特到32比特映射
DES加密算法
S-Box共有8个表格,每个表格为4X16。每次从6比特得到4比特,方式如下图,将比特1-6中的比特1和比特6亦即b1b6作为0-3的索引行号,比特2-5 b2b3b4b50-15的索引列号,从相应的S-Box中获取对应的值。
DES加密算法
八个S-Box表格如下
DES加密算法
9、(semi-)Weak keys
由于DES算法中子**的生成是依赖**循环移位得到的,所以一个特征的**的循环以为结果相同,称为weak keys01010101 01010101, FEFEFEFE FEFEFEFE, E0E0E0E0 F1F1F1F11F1F1F1F 0E0E0E0Esemi-weak keys指那些只产生两组不同key的**。
10、2DES(Doulbe DES) 3DES
2DES是采用两个key进行两次DES算法加密,加密C=Ek2[KE1[P]],同样对称解密P=Dk1[Dk2[C]]3DES又名TDEA(Triple data encryption algorithm),采用三次**处理,加密时使用的方法C=Ek3[Dk2[Ek1[P]]],解密时使用方法P=Dk1[Ek2[Dk3[C]]]

相关文章: