分组加密也称快加密,即每次加密一块明文。可以把块加密理解一种特殊的替代密码,但是其每次替代的是一大块。分组密码每次使用相同的密钥加密整个明文位分组。这意味着对给定分组内任何明文位的加密都依赖于与它同在一个分组内的其他所有的明文位。实际中,大多数分组密码的分组长度要么是128位(16字节),比如高级加密标准(AES),要么是64位(8字节),比如数据加密标准(DES)或三重DES(3DES)算法。
DES算法
强加解密算法基于两种操作,混淆和扩散。
混淆:使密钥和密文之间的关系尽可能模糊,常用元素位替换。
扩散:为了隐藏明文的统计属性而将一个明文符号的影响扩散导多个密文符号的加密操作,常用元素就是位置换。
DES算法概述
DES是一种选代算法。DES对明文中每个分组的加密过程都包含16轮,且每轮的操作完全相同,每轮都会使用不同的子密钥,并目所有子密钥k都从主密钥k中推导而来的。如下图迭代结构。
DES的Feistel网络
加密过程:
⊕
对应的密文为()
DES内部结构
(1)初始置换与逆初始置换
(2)f函数
先将32位进行E盒扩充为48位后与轮密钥异或,分为6位一组,在进行s盒转换为32位,接着p置换。
E盒扩充:
s盒:
6位一组中第一个数和第二个数组成一个二进制数转换为十进制x作为行,第二到第五组成二进制数转换为十进制y作为列,s盒中第x行第y列的数字转换二进制作为四位输出
p置换