DES加密算法

简介
DES Data Encryption Standard 的缩写,属于对称分组码算法,数据分组的长度为64 比特。密钥长度为56 比特( 如果带有校验位则是64 比特,每个8 比特字节最后一个比特位是奇偶校验位) 。奇偶校验位的值是前七个比特位的异或运算的结果取反( 使用奇数校验), 其结构如下:
算法流程
1、 整体加解密流程
由于加解密算法对称,即解密过程为加密的逆过程。

2、 加密整体过程
IP Initial Permutation, LxRx 整体的64 比特数,L R 各位32 比特。

 
3、IP IP-1 的向量表
在向量表中的数字表示第几个比特数,将输入的64 比特根据向量表进行重新排序。

4、16 次循环运算
需要进行16 次类似的运算,这种运算称为Feistel 算法。其中⊕表示异或运算。运算的基本方法,Ki 为密钥生成算法生成的子密钥,f(.) 函数进行密钥和比特的运算。Li = Ri-1, Ri = Li-1 f(Ri-1,Ki)


5、Ki 生成方法

Parity drop 在进行校验位去除的时候,需要进行置换,向量如下( 有些文档称为PC1 permuted choice PC1)

Shift left 每次左移一个或两个比特,注意使用的是循环左移,不同比特数移位情况如下

Compress 是将56 比特的密钥,生成48 比特的过程,向量如下( 有些文档称为PC2 permuted choice PC2)

6、f(.) 功能
E(Expansion) 的功能是将32 比特转换到48 比特,而P 是进行置换,S-Boxes 48bits 映射到32 比特。

理解上straight D-box 处应该还有一次置换处理。

P 置换为32 位到32 位的置换处理,向量表格如下

7、Expansion 32 比特到 48 比特扩展

同样置换向量为

8、S-Box 的处理 48 比特到 32 比特映射

S-Box 共有8 个表格,每个表格为4X16 。每次从6 比特得到4 比特,方式如下图,将比特1-6 中的比特1 和比特6 亦即b1b6 作为0-3 的索引行号,比特2-5 b2b3b4b5 0-15 的索引列号,从相应的S-Box 中获取对应的值。

八个S-Box表格 如下

9、(semi-)Weak keys
由于DES 算法中子密钥的生成是依赖密钥循环移位得到的,所以一个特征的密钥的循环以为结果相同,称为weak keys 01010101 01010101, FEFEFEFE FEFEFEFE, E0E0E0E0 F1F1F1F1 1F1F1F1F 0E0E0E0E semi-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]]]

猜你喜欢

转载自blog.csdn.net/dreambitbybit/article/details/80087678