信安实验-DES(备课)
2022-09-26 22:02:17
# DES 加密
1 | 明文M=(0123456789ABCDEF)16=(00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111)2 |
# 秘钥的计算
1 | K=00010011 00110100 01010111 01111001 10011011 10111100 11011111 11110001 |


压缩置换 1:
00010011 8
00110100 16
01010111 24
01111001 32
10011011 40
10111100 48
11011111 56
11110001 64

按照表格选出上述数字
1111000
0110011
0010101
0101111
0101010
1011001
1001111
0001111
得到
1 | K0=11110000110011001010101011110101010101100110011110001111 |
拆分
1 | C0=1111000011001100101010101111 |
第一轮,左移 1 位
1 | C1=1110000110011001010101011111 |
合并得到新的子秘钥
1 | C1D1=11100001100110010101010111111010101011001100111100011110 |
压缩置换 2:
1 | 1110000 7 |

根据压缩置换 2 表得到 K1:
1 | 000110 |
得到
1 | K1(48)= 00011011 00000010 11101111 11111100 01110000 01110010 |
# 初始转换
1 | M=00000001 00100011 01000101 01100111 10001001 10101011 11001101 11101111 |
1 |
|

根据初始置换表转换:
1 | 00000001 8 |
置换得到:
1 | 11001100 |
1 | M=11001100 00000000 11001100 11111111 11110000 10101010 11110000 10101010 |
分为左右两部分
1 | L0=11001100 00000000 11001100 11111111 |
# 扩展置换
1 | R0=11110000 10101010 11110000 10101010 |
分组
1 | 1111 |
拓展置换得到
1 | 011110 |
得到
1 | E(R0)48=01111010 00010101 01010101 01111010 00010101 01010101 |
R048=E (R0) 异或 K1
1 | K1(48)= 00011011 00000010 11101111 11111100 01110000 01110010 |
得到
1 | R0(48)=01100001 00010111 10111010 10000110 01100101 00100111 |
# S 盒替换
将 R0 分组
1 | 011000 |
扩展位二进制转十进制,原位二进制转为十进制,对应表格中数字转为二进制
| 组 | 列 | 值 |
|---|---|---|
| S1: 00=0 | 1100=12 | 5=0101 |
| S2:01=1 | 1000=8 | 12=1100 |

| 组 | 列 | 值 |
|---|---|---|
| S3:00=0 | 1111=15 | 8=1000 |
| S4:10=2 | 1101=13 | 2=0010 |

| 组 | 列 | 值 |
|---|---|---|
| S5:11=3 | 0000=0 | 11=1011 |
| S6:10=2 | 0011=3 | 5=0101 |

| 组 | 列 | 值 |
|---|---|---|
| S7:00=0 | 1010=10 | 9=1001 |
| S8:11=3 | 0011=3 | 7=0111 |

最终
1 | S1(011000)=0101, S2(010001)=1100, S3(011110)=1000, S4(111010)=0010 S5(100001)=1011, S6(100110)=0101, S7(010100)=1001, S8(100111)=0111 |
# P 盒置换
分组
1 | 0101 4 |

根据 P 盒置换表转换得到:
1 | 0010 |
1 | F= 00100011 01001010 10101001 10111011 |
1 | L0=11001100 00000000 11001100 11111111 |
1 | R1=L0^F=11101111 01001010 01100101 01000100 |
1 | L1=R0=11110000 10101010 11110000 10101010 |
经过第一轮加密后
1 | M1=11101111 01001010 01100101 01000100 11110000 10101010 11110000 10101010 |
即
M1=(EF4A6544F0AAF0AA) 16