DES算法详细图解

一、简介

DES 算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是 1972 年美国 IBM 公司研制的对称密码体制加密算法。DES 是一种对称密码,即其加密过程和解密过程使用相同的密钥,与几乎所有现代分组加密一样,DES 也是一种迭代算法。DES 对明文中每个分组对加密过程都包含 16 轮,且每轮都操作完全相同

二、资料来源

《深入浅出密码学》–Christof Paar,Jan Pelzl 著

三、实现原理(主要流程

一、了解几个概念

1.初始置换/逆初始置换

按照一定的规则,将原来的 64 位二进制位重新排序
表中数字的意思是。第一个格子中是 58,意味着将 64 位二进制码中第 58 位的值,放到第一个格子的位置中,以此类推
初始置换表

逆初始置换表

2.f 函数

1)f 函数首先将输入经过扩展置换,将 32 位的输入扩展为 48 位。
2)将 48 位结果与第 i 轮第密钥 ki 进行 XOR(异或)操作
3)将异或操作第结果送入 S 盒进行压缩,压缩成 32 位
4)将 32 位的结果送入 P 盒置换

#### 3.扩展置换

4.黑盒压缩

黑盒压缩,也称 S 盒压缩
就是把’48 位与 ki 异或之后‘的结果,进行压缩,压缩成为 32 位
使用的方法是将 48 位二进制码 每 6 个分成 1 组,一共 8 组,对应 8 个黑盒
下面以第一组为例,假设第一组中的二进制数为 100101 经过黑盒压缩,得到了 1000

以下是 8 个黑盒

5.P 盒置换

和上面初始置换的用法一样,表不同而已

6、密钥编排

密钥编排从原始的 56 位密钥中得到 16 个轮密钥 k,其中每个轮密钥 ki 都是 48 位,轮密钥的另一个术语叫子密钥。

PC-1

PC-2

二、具体流程

明文输入后,经过 初始置换,打乱了顺序。


经过初始置换被分成了 L0 和 R0 两部分

R0 经过 f 函数 得到的输出与 L0 进行 异或 操作,得到的输出作为下一轮的 R1

R0 作为下一轮的 L1


经过很多轮之后,将 L16 与 R16 交换左右之后,再进行一个 逆初始置换

则得到密文


f 函数中

Ri-1 经过 扩展置换 得到了 48 位的输出

将 48 位输出与 ki 进行异或,

将***异或***后的输出进行 S 盒压缩成 32 位

再进行 P 盒置换,得到输出,作为 f 函数的输出


密钥编排中

DES 输入的密钥通常是 64 位,其中每第 8 个位都作为前面 7 位的一个奇校验位。

所以将 64 位密钥进行 PC-1 得到 56 位,是将校验位全部去掉了

PC-1 的置换 和初始置换思路一样

将 PC-1 的输出分成长度均为 28 位的两部分

将两部分周期性地向左移动一或两位(即 循环移位 ),移动的具体位数取决于轮数 i

  • 在第 i=1,2,9,16 轮中,左右两部分向 左移动一位
  • 在 i != 1、2、9、16 轮时候,左右两部分向 左移动两位

经过 PC-2 后得到的 48 位输出作为 ki

发布了74 篇原创文章 · 获赞 3 · 访问量 4359

猜你喜欢

转载自blog.csdn.net/qq_40672635/article/details/105384881