DES補充材料

作為參考，本文提供了數據加密標準（DES）塊密碼中提到的各種查找表的細節。

本文檔中的數據都是以大端序排列的，也即首位為MSB。

## 初始置換(IP, Initial permutation)

58｜50｜42｜34｜26｜18｜10｜2

60｜52｜44｜36｜28｜20｜12｜4

62｜54｜46｜38｜30｜22｜14｜6

64｜56｜48｜40｜32｜24｜16｜8

57｜49｜41｜33｜25｜17｜9｜1

59｜51｜43｜35｜27｜19｜11｜3

61｜53｜45｜37｜29｜21｜13｜5

63｜55｜47｜39｜31｜23｜15｜7

該表顯示了對64位塊的初始置換，其意義如下：輸出的首位為輸入的第58位，第二位為50位，依此類推，輸出的最後位為輸入的第7位。

以上資訊為了方便表示被寫成表格形式，但它實際上是一個矢量，而非矩陣。

## 最終置換 (IP-1)

40｜8｜48｜16｜56｜24｜64｜32

39｜7｜47｜15｜55｜23｜63｜31

38｜6｜46｜14｜54｜22｜62｜30

37｜5｜45｜13｜53｜21｜61｜29

36｜4｜44｜12｜52｜20｜60｜28

35｜3｜43｜11｜51｜19｜59｜27

34｜2｜42｜10｜50｜18｜58｜26

33｜1｜41｜9｜49｜17｜57｜25

IP-1（亦被稱為FP）是IP的逆過程，上表的含義與IP的相似。

## 擴張函數 (E函數)

32｜1｜2｜3｜4｜5

4｜5｜6｜7｜8｜9

8｜9｜10｜11｜12｜13

12｜13｜14｜15｜16｜17

16｜17｜18｜19｜20｜21

20｜21｜22｜23｜24｜25

24｜25｜26｜27｜28｜29

28｜29｜30｜31｜32｜1

擴張函數被作為最初和最終的置換。注意輸入中的某些位在輸出中被用到了不止一次，例如輸入的第5位出現在輸出的第6和8位。因此，32位的半塊輸入被擴張到了48位。

## P置換

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

P置換將32位的半塊數據重新排列。

## 選擇置換1(PC-1)

左

57｜49｜41｜33｜25｜17｜9

1｜58｜50｜42｜34｜26｜18

10｜2｜59｜51｜43｜35｜27

19｜11｜3｜60｜52｜44｜36

右

63｜55｜47｜39｜31｜23｜15

7｜62｜54｜46｜38｜30｜22

14｜6｜61｜53｜45｜37｜29

21｜13｜5｜28｜20｜12｜4

上表的「左」和「右」兩部分表現了輸入密鑰組成密鑰調度狀態中左右兩部分的過程。主要輸入的64位數據中只用到了56位，剩餘的8位可以用於奇偶校驗。

## 選擇置換2(PC-2)

14｜17｜11｜24｜1｜5

3｜28｜15｜6｜21｜10

23｜19｜12｜4｜26｜8

16｜7｜27｜20｜13｜2

41｜52｜31｜37｜47｜55

30｜40｜51｜45｜33｜48

44｜49｜39｜56｜34｜53

46｜42｜50｜36｜29｜32

該置換從56位的密鑰調度狀態中取出48位的子密鑰。

## 置換盒 (S盒)

S1

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜14｜4｜13｜1｜2｜15｜11｜8｜3｜10｜6｜12｜5｜9｜0｜7

0yyyy1｜0｜15｜7｜4｜14｜2｜13｜1｜10｜6｜12｜11｜9｜5｜3｜8

1yyyy0｜4｜1｜14｜8｜13｜6｜2｜11｜15｜12｜9｜7｜3｜10｜5｜0

1yyyy1｜15｜12｜8｜2｜4｜9｜1｜7｜5｜11｜3｜14｜10｜0｜6｜13

S2

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜15｜1｜8｜14｜6｜11｜3｜4｜9｜7｜2｜13｜12｜0｜5｜10

0yyyy1｜3｜13｜4｜7｜15｜2｜8｜14｜12｜0｜1｜10｜6｜9｜11｜5

1yyyy0｜0｜14｜7｜11｜10｜4｜13｜1｜5｜8｜12｜6｜9｜3｜2｜15

1yyyy1｜13｜8｜10｜1｜3｜15｜4｜2｜11｜6｜7｜12｜0｜5｜14｜9

S3

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜10｜0｜9｜14｜6｜3｜15｜5｜1｜13｜12｜7｜11｜4｜2｜8

0yyyy1｜13｜7｜0｜9｜3｜4｜6｜10｜2｜8｜5｜14｜12｜11｜15｜1

1yyyy0｜13｜6｜4｜9｜8｜15｜3｜0｜11｜1｜2｜12｜5｜10｜14｜7

1yyyy1｜1｜10｜13｜0｜6｜9｜8｜7｜4｜15｜14｜3｜11｜5｜2｜12

S4

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜7｜13｜14｜3｜0｜6｜9｜10｜1｜2｜8｜5｜11｜12｜4｜15

0yyyy1｜13｜8｜11｜5｜6｜15｜0｜3｜4｜7｜2｜12｜1｜10｜14｜9

1yyyy0｜10｜6｜9｜0｜12｜11｜7｜13｜15｜1｜3｜14｜5｜2｜8｜4

1yyyy1｜3｜15｜0｜6｜10｜1｜13｜8｜9｜4｜5｜11｜12｜7｜2｜14

S5

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜2｜12｜4｜1｜7｜10｜11｜6｜8｜5｜3｜15｜13｜0｜14｜9

0yyyy1｜14｜11｜2｜12｜4｜7｜13｜1｜5｜0｜15｜10｜3｜9｜8｜6

1yyyy0｜4｜2｜1｜11｜10｜13｜7｜8｜15｜9｜12｜5｜6｜3｜0｜14

1yyyy1｜11｜8｜12｜7｜1｜14｜2｜13｜6｜15｜0｜9｜10｜4｜5｜3

S6

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜12｜1｜10｜15｜9｜2｜6｜8｜0｜13｜3｜4｜14｜7｜5｜11

0yyyy1｜10｜15｜4｜2｜7｜12｜9｜5｜6｜1｜13｜14｜0｜11｜3｜8

1yyyy0｜9｜14｜15｜5｜2｜8｜12｜3｜7｜0｜4｜10｜1｜13｜11｜6

1yyyy1｜4｜3｜2｜12｜9｜5｜15｜10｜11｜14｜1｜7｜6｜0｜8｜13

S7

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜4｜11｜2｜14｜15｜0｜8｜13｜3｜12｜9｜7｜5｜10｜6｜1

0yyyy1｜13｜0｜11｜7｜4｜9｜1｜10｜14｜3｜5｜12｜2｜15｜8｜6

1yyyy0｜1｜4｜11｜13｜12｜3｜7｜14｜10｜15｜6｜8｜0｜5｜9｜2

1yyyy1｜6｜11｜13｜8｜1｜4｜10｜7｜9｜5｜0｜15｜14｜2｜3｜12

S8

x0000x｜x0001x｜x0010x｜x0011x｜x0100x｜x0101x｜x0110x｜x0111x｜x1000x｜x1001x｜x1010x｜x1011x｜x1100x｜x1101x｜x1110x｜x1111x

0yyyy0｜13｜2｜8｜4｜6｜15｜11｜1｜10｜9｜3｜14｜5｜0｜12｜7

0yyyy1｜1｜15｜13｜8｜10｜3｜7｜4｜12｜5｜6｜11｜0｜14｜9｜2

1yyyy0｜7｜11｜4｜1｜9｜12｜14｜2｜0｜6｜10｜13｜15｜3｜5｜8

1yyyy1｜2｜1｜14｜7｜4｜10｜8｜13｜15｜12｜9｜0｜3｜5｜6｜11

上表列出了DES中使用的8個S盒。每個S盒將6位輸入變為4位輸出。給定輸入後，輸出行由外側兩位確定，列由內側的4位確定，例如「011011」的輸入的外側位為「01」，內側位為「1101」，而每張表的第一行為「00」，第一列為「0000」因此在S5中的對應輸出為「1001」（十進位的9），即第2行，第14列（參見S盒）。

## 密鑰調度過程中的移位

回次｜左移位數

1｜1

2｜1

3｜2

4｜2

5｜2

6｜2

7｜2

8｜2

9｜1

10｜2

11｜2

12｜2

13｜2

14｜2

15｜2

16｜1

在子密鑰生成完成前，密鑰調度狀態的每個半塊都要向左循環移動特定的位，上表顯示了移位的數量。