单钥加密体制
DES算法
DES属于对称密码算法中的分组加密(块加密),和流密码相对应。DES算法将明文分为若干个64位块(不足补充),秘钥为56位(8位校验位)。DES算法流程图如下
接下来,进行DES算法关键步骤的逐步解析:
IP置换
IP置换和IP逆置换,还有后面提到的P置换逻辑都是一样的。例如下图IP置换矩阵的第一行第一列为58,含义即为将第58个元素位置换为第一个。置换完后密文长度不变,仍为64位。
E扩展
64位字段可以分为前32位和后32位,前32位不变,后32位进行E扩展置48位,具体扩展方法如下:
例如图中原本的32位字段为,将32位字段分为8组,每组前后各加两个比特,组成新的6×8=48位字段。新加的两位分别是前一组字段的最后一位和后一组字段的第一位,见下所示。
11010001 0011 0100原文本
011010 100010 100110 101001 E扩展文本
S盒压缩
S盒是精心设计的8个矩阵,是DES算法中混淆的关键部分,他的质量(随机性)很大程度影响DES的加密效果。
之后,我们要再将E扩展后的48位后半字段,通过S盒压缩为32位,具体压缩方法如下:
先将48位分为8组,每组6位。6位取出前两位和中间四位,拼成2进制数,再将2进制转化为十进制,即经过一系列操作,将6位数变为2个十进制数。将这两个十进制数当作横纵坐标,寻找S盒中对应的十进制数,再将这个十进制数用4位2进制表示。至此,我们将48位文本压缩为了32位。
(3,15)在S盒中对应的元素为13(查表得),之后转换为二进制1011,所以通过S盒我们将111111压缩为了1011。