DES-E盒扩展计算详解

DES 的 E 盒扩展如何从 32 位映射到 48 位的详细说明

#status / growing #type / concept

[!info] related notes

DES-E盒计算详细

这个过程其实非常直观,所谓的“扩展”并不是凭空产生新的随机数,而是**“复制”**了原数据中特定位置的位。

根据您的 PPT 文档 和 DES 标准,E盒的扩展逻辑可以拆解为以下几个步骤来理解:

1. 分组 (The Grouping)

首先,将输入的 32位 数据 () 按顺序分成 8组,每组包含 4位

  • 第1组:位 1, 2, 3, 4
  • 第2组:位 5, 6, 7, 8
  • 第8组:位 29, 30, 31, 32

2. “相邻组边界位”是什么意思?

为了把每组的 4位 变成 6位,我们需要在每组的最左边最右边各塞进去一位。这两位是从哪里来的呢?就是从它左邻居的最后一位右邻居的第一位借来的(复制过来的)。

这就叫“取自相邻组的边界位”。

3. 具体增加过程(图解)

我们以第 2 组(包含数据位 5, 6, 7, 8)为例:

  • 原始数据5, 6, 7, 8 (4位)
  • 左扩展:它左边的组是“第1组”(1, 2, 3, 4)。边界位是 4
  • 把 4 复制过来放在最前面。
  • 右扩展:它右边的组是“第3组”(9, 10, 11, 12)。边界位是 9
  • 把 9 复制过来放在最后面。
  • 结果:第 2 组变成了 4, 5, 6, 7, 8, 9 (6位)。

4. 特殊情况:首尾循环 (Wrap-around)

对于第1组和第8组,它们的“邻居”是循环的:

  • 第 1 组 (1, 2, 3, 4):
  • 左邻居是第 8 组(因为是循环的)。第8组的最后一位是 32
  • 右邻居是第 2 组。第一位是 5

结果32, 1, 2, 3, 4, 5

  • 第 8 组 (29, 30, 31, 32):
  • 左邻居是第 7 组。最后一位是 28
  • 右邻居是第 1 组。第一位是 1

结果28, 29, 30, 31, 32, 1

5. 最终的 E盒矩阵

根据上面的规律,把所有8组拼起来,就是标准的 E盒置换表。你可以直接将下表填入你的题目矩阵中:

组号左扩展位原始4位右扩展位对应的 E 盒输出序列
1321 2 3 4532, 1, 2, 3, 4, 5
245 6 7 894, 5, 6, 7, 8, 9
389 10 11 12138, 9, 10, 11, 12, 13
41213 14 15 161712, 13, 14, 15, 16, 17
51617 18 19 202116, 17, 18, 19, 20, 21
62021 22 23 242520, 21, 22, 23, 24, 25
72425 26 27 282924, 25, 26, 27, 28, 29
82829 30 31 32128, 29, 30, 31, 32, 1

总结: 所谓的“边界位”,就是数据在物理位置上是相邻的。为了让加密后的每一位都受到周围数据的影响(产生雪崩效应),DES 在扩展时故意把这种相邻关系交织在一起。

创建于 2026/1/6 更新于 2026/5/27