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 盒输出序列 |
|---|---|---|---|---|
| 1 | 32 | 1 2 3 4 | 5 | 32, 1, 2, 3, 4, 5 |
| 2 | 4 | 5 6 7 8 | 9 | 4, 5, 6, 7, 8, 9 |
| 3 | 8 | 9 10 11 12 | 13 | 8, 9, 10, 11, 12, 13 |
| 4 | 12 | 13 14 15 16 | 17 | 12, 13, 14, 15, 16, 17 |
| 5 | 16 | 17 18 19 20 | 21 | 16, 17, 18, 19, 20, 21 |
| 6 | 20 | 21 22 23 24 | 25 | 20, 21, 22, 23, 24, 25 |
| 7 | 24 | 25 26 27 28 | 29 | 24, 25, 26, 27, 28, 29 |
| 8 | 28 | 29 30 31 32 | 1 | 28, 29, 30, 31, 32, 1 |
总结: 所谓的“边界位”,就是数据在物理位置上是相邻的。为了让加密后的每一位都受到周围数据的影响(产生雪崩效应),DES 在扩展时故意把这种相邻关系交织在一起。