密码学基础02——详解DES算法

Feistel模型:

基于四方面进行设计:

1.数据映射设计:

可映射(一一对应)和不可映射(不是线性关系)

2.扩散和扰乱:

一.

扩散:把明文的统计特征消散到密文中,让明文的每个数字影响许多密文的数字,反之亦然

一般采用方式:

平均操作进行加密

重复使用对数据的某种置换,并对置换结果在应用某个函数

二.

扰乱:密文的统计特性与加***的取值之间的关系尽量复杂。

一般采用方式:

复杂的替代算法(非线性函数)

3.加密算法

密码学基础02——详解DES算法

通过n轮迭代,上图为一次迭代的步骤

Feistel具体实现依赖于以下参数和设计特点

分组大小

**大小

循环次数

子**产生算法

Round函数

4.解密算法

密码学基础02——详解DES算法

DES算法:
密码学基础02——详解DES算法

总流程:

1.输入64比特明文数据

2.进行初始置换IP

3.在**的控制下进行16轮迭代

4.交换左右32比特

5.初始逆置换IPˆ(-1)

6.输出64比特密文数据

初始置换:

产生8*8的一个矩阵,调整位置置换,比如把1号位放在其他位置,如放在第5号位置,那么逆置换的一号位就为5

单轮迭代流程:
密码学基础02——详解DES算法

子**:

1.从64比特**K中去掉8的倍数(因为8的倍数位为校验位),共得56比特

2.将56比特分成两份,每份28比特,分别进行循环左移

3.进行压缩置换,从56比特中输出48比特,生成子**

这是一个循环的过程,生成Ki个子**

E扩展置换:共32比特,从第2比特开始每隔2位重复2位,变成48比特

S盒替代:共有8组盒子,每个S盒都接收6个比特位的输入并产生4个比特作为输出,每个S盒子都为4*16的矩阵,如:
密码学基础02——详解DES算法

将6个比特位的第一位和最后一位(此时都是二进制)转为十进制作为行号,剩余4个转为10进制后作为列号,找行号与列号的交叉点的数字转为二进制后进行输出,即输出4个字节

S盒特点:

没有一个S盒是它输入变量的线性函数

S盒的每一行是整数0,…,15的一个置换

S盒子每一位的输入变化至少引起两位的输出变化

P置换:

用来产生雪崩效应

明文或**的一点小变都会引起密文较大的变化

DES算法已被**,所以不建议使用此加密算法

注:图片均来源于网络,版权归原作者所有。如有侵权,请联系作者删除,谢谢!