DES
DES
1 | 1、初始置换(IP置换):将输入的64位明文块进行置换和重新排列,生成新的64位数据块。 |
步骤
初始置换(IP置换)
IP置换是将输入的64位明文块进行置换和重新排列,生成新的64位数据块,这个顺序是固定的
1 | 58,50,42,34,26,18,10,2, |
即将原来位于第58个位置的数据放在第1个位置,原来位于第50个位置的元素放在第2个位置,第42个放在第3个,34->4以此类推…(下面的所有置换都是这个意思)
加密轮次
初始置换完成后,明文被划分成了相同长度(32位)的左右两部分,记作L0,R0。接下来就会进行16个轮次的加密了。
我们从单独一个轮次来看。首先把目光聚焦在R0这里。
右半部分R0会作为下一轮次的左半部分L1的输入。其次,R0会补位到48位和本轮次生成的48位K0(马上讲K0的生成)输入到F轮函数中去。F函数的输出结果为32位,结果F(R0,K0)会和L0进行异或运算作为下一轮次右半部分R1的输入。
以此类推,重复16轮运算。
F轮函数

拓展R到48位
将32位的R0右半部分进行扩展,得到一个48位的数据块。数据拓展也是根据一个固定的置换表。红框中就是我们要补位的数据。
由此可见,扩展过程的每一位都是根据上述的置换表从输入的32位数据块中提取出来的。原始数据的第32位被补充到了新增列的第1个,以此类推…
子密钥K的生成
1.DES算法采用了每轮子密钥生成的方式来增加密钥的复杂性和安全性。每轮子密钥都是由主密钥(64位)通过密钥调度算法(Key Schedule Algorithm)生成的。
1 | static const int PC1[56] = { |
从PC-1的置换表中可以看到,舍弃掉的8位数据是原始数据中每8位数据的最后一位,也就是我们所熟知的奇偶检验位。这8位被丢弃是因为它们对于密钥的安全性没有贡献,而且能够使DES算法的计算速度更快。
2、对C0和D0进行循环左移操作。循环左移完成后生成C1和D1。因此,在16个轮次的计算当中会得到16个32位的数据块C1-C16和D1-D16。在DES中循环左移也有固定的规则。
对于i=1,2,…,16,对于Ci和Di,若i为1,2,9或16,则循环左移一位,否则循环左移两位。
3、 对于C1,D1,将它们经过置换选择2(Permuted Choice 2 简写位PC-2)后,得到48位的子密钥K1,用于每轮加密中与输入数据进行异或运算。PC-2置换的输入是由PC-1置换生成的56位的密钥,而它的输出是48位的子密钥。PC-2置换将56位的密钥重新排列,丢弃了8位并选取了其中的48位作为子密钥。PC-2的置换规则如下:
1 | static const int PC2[48] = { |
4、至此,经过PC-2后的结果就是我们当前轮次的子密钥K1了。在整个DES加密过程中会生成16个48位子密钥K1-K16,分别用于DES算法中的16轮加密过程,从而保证每轮加密所使用的密钥都是不同的,增加了破解的难度。
当前轮次的子密钥与拓展的48位R进行异或运算
当前轮次的子密钥Ki与拓展的48位Ri进行异或运算。运算结果会作为接下来S盒替换的输入
s盒替换(和aes的有点像)
S盒替换(Substitution Box substitution)是一种在密码学中广泛使用的加密技术。它是将明文中的一组比特映射到密文中的一组比特的过程,用于增强密码的安全性。DES中S盒替换用于将上一轮异或运算的48位结果映射到32位输出中去。
S盒也是一种置换表。S盒内部有8个S块,记作S1-S8。每个S块都会接收6位字符作为输入并输出四位字符。这里我们以第一个S盒S1为例。他是一个4*16的置换表。
例如输入101010到S1中。S1会将这六位的第一位和第六位拿出来10作为S1的行,中间四位0101拿出来作为S1的列。我们转换成十进制,此时映射到这个S盒的位置就是(2,5)对应S盒的第3行第6列(索引都从0开始数)。
p盒置换
1 | static const int P[32] = { |
P盒替换将S盒替换的32位输出作为输入,经过上述固定的替换表进行替换后即为最后F轮函数的结果。
该结果F(R0,K0)与L0进行异或运算得到下一轮的右半部分R1
逆置换

在经过16轮次计算后,DES会对最后的结果进行最后一次置换。即为最后的输出结果。
- Title: DES
- Author: LinX
- Created at : 2026-01-02 02:42:18
- Updated at : 2026-01-02 03:04:58
- Link: https://redefine.ohevan.com/2026/01/02/des/
- License: This work is licensed under CC BY-NC-SA 4.0.