DES 有多少轮?
DES 使用 16 轮。这 16 轮中的每一轮都包含以下高级步骤:
密钥转换 - 初始 64 位密钥通过丢弃每个第 8 位来转换为 56 位密钥。因此,每一轮都有一个 56 位密钥可用。从这个 56 位密钥中,每一轮都会使用称为密钥转换的过程生成不同的 48 位子密钥。
将 56 位密钥分成两个 28 位的半部分。根据轮数,这两半部分会循环左移一位或两位。
例如,如果轮数是 1、2、9 或 16,则只左移一位。对于其他轮数,则循环左移两位。每一轮移动的密钥位数显示在表中。
轮数 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
移动的密钥位数 | 1 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 | 2 | 2 | 2 | 2 | 2 | 2 | 1 |
每轮移动的密钥位数
扩展置换 - 初始置换后,它有两个 32 位明文区域,称为左明文和右明文。在扩展置换期间,RPT 从 32 位扩散到 48 位。它可以将位大小从 32 位增强到 48 位,位也经过置换,即所谓的扩展置换。
S盒替换 - S盒替换是一个过程,它接收来自 XOR 运算的 48 位输入(包含压缩密钥和扩展 RPT),并使用替换技术生成 32 位输出。
P盒置换 - S盒的输出包含 32 位。这 32 位使用 P盒进行置换。这个简单的置换结构包含简单的置换,包括用 P盒表中定义的另一个位替换每个位,而无需任何扩展或压缩。这称为 P盒置换。
P盒显示在表中。例如,第一个块中的 16 表示原始输入中第 16 位的位置变为输出中第 1 位的位置,而块号 16 中的 10 表示原始输入中第 10 位的位置变为输出中第 16 位的位置。
16 | 7 | 20 | 21 | 29 | 12 | 28 | 17 | 1 | 15 | 23 | 26 | 5 | 18 | 31 | 10 |
2 | 8 | 24 | 14 | 32 | 27 | 3 | 9 | 19 | 13 | 30 | 6 | 22 | 11 | 4 | 25 |
异或和交换 - 所有这些操作都只在 64 位原始明文的 32 位右半部分上执行。左半部分到目前为止不受影响。在此阶段,初始 64 位明文块的左半部分与 P盒置换生成的输出进行异或运算。
广告