目录
一、设计目标
用于加密保护静态存储和传输信道中的数据,安全使用10~15 年。
二、特点
DES是一种分组密码。明文、密文和密钥的分组长度都是64位。
DES是面向二进制的密码算法。因而能够加解密任何形式的计算机数据。
DES是对合运算,因加密和解密共用同一算法,从而使工程实现的工作量减半。
三、算法加密过程
1.生成16个子密钥
2.初始置换IP
3.加密函数f加密
4.逆初始置换IP
1.1 子密钥生成
1.置换选择1
2.循环左移
3.置换选择2,得48位密钥
4.迭代16轮
1.1.1 置换选择1
子密钥(8x8矩阵)最后一列用于校验,56位有效密钥长度参与置换。Co是矩阵上半部分,Do矩阵是下半部分。
置换顺序固定如下:
置换选择的作用有两个:一是从 64 位密钥中去掉8个奇偶校验位:二是把其余56位密钥位打乱重排,且将前28 位作为Co ,后 28位作为Do。
1.1.2 循环左移
循环左移固定顺序如下:
1.1.3 置换选择2
将Ci和Di重新合并成一个新的矩阵,按下表挑选位数生成一个48位密钥(14是取矩阵第14位)
1.2 初始置换IP
按固定表打乱明文顺序。Co是矩阵上半部分,Do矩阵是下半部分。
1.3 加密函数 f
- 选择运算(扩展为48位)
- 与子密钥异或运算
- S盒运算
- 置换运算
取右边的明文Ro进行加密运算,运算流程如下:
1.3.1 选择运算
顺出矩阵的固定顺序如下,由32位扩展为48位
1.3.2 与48位密钥异或运算
1.3.3 S盒运算
有8个S盒,输入6位(一行),输出4位
1.3.4 置换运算
作用:用P置换来提供扩散,把S盒的混淆作用扩散开来,提高安全性。
第1-15轮迭代打乱顺序固定如下:
第16轮应进行逆初始置换IP运算
逆初始置换表格如下:
四、解密
子密钥使用顺序倒过来,先用K16,最后用K1进行解密