对称分组密码
- 对称加密:采用单钥密码系统的加密方法,同一个密钥用来加密和解密,常见的对称加密算法有 DES,3DES,AES,RC2,RC4,RC5等
对称密码又分为流密码和分组密码 - 流密码就是每次加密数据流的一个字符或字节。依赖算法程序产生相同的位流,同时算法程序受密钥的控制
- 分组密码则是将明文按照特定长度分组后,将分组明文作文整体进行加密,并将分组密文合并即可,密文和明文等长。
DES(数据加密标准):
DES算法具体通过对明文进行一系列的排列和替换操作来将其加密
密钥长64位,其中8位为校验位(8、16、24、32、40、48、56、64)
明文加密的过程主要分为
- 初始置换
- 16轮迭代(每一轮运算都需要密钥的一个子密钥Ki)
- F论函数
- 扩展运算
- 异或运算
- S盒运算
- P置换
- 异或
- F论函数
- 逆置换
初始置换
使用初始置换表(逆置换表进行逆置换)
从左到右,从上到下依次数共64个,表中第i个数据1<=M[i]<=64,M[i]表示原始数据中第M[i]个数置换到第i位置
经过置换后,一分为二,前32位位L0,后32位位R0
F论函数f(R0,k1)
E扩展(将32位R0 扩展位K1的48位)
将32分为8组,每组从4位扩展位6位,合并后得到48位
将扩展后的数据同子密钥进行异或运算后重写压缩为32位
S盒压缩
同样将48位分为8组,将每组6位压缩为4位
需要使用如下压缩转换表
压缩后再同初始置换相同的方法,按照P置换表将32位置换
计算子密钥Ki
共生成16个子密钥
如下案例,(Ci+1,Di+1)由(Ci,Di)左移得到