DES算法密鑰生成中的壓縮
有沒有人有虛擬碼或算法,甚至是DES算法的壓縮(pc2)圖?
我找不到丟棄的位之間的關係,即使我手動執行它也不會產生正確的結果。我的意思是把作為輸出的第一位(子鍵 $ K_i $ ) 第 14 位 $ C $ ,輸出的第 2 個是第 17 個 $ C $ .. 輸出的第 25 位是第 41 位 $ D $ .
以上是正確的還是我誤解了?
PC-2 替換轉換了 28 位的 56 位連接 $ C $ 和 $ D $ 在它們被適當地旋轉後,進入 48 位子鍵 $ K_i $ 圓形 $ i $ ,在此之前使用 XOR 與擴展的 48 位輸出組合 $ E $ 並為 8 個 S 表中的每一個分為 6 位條目。定義 PC-2 的表格在定義標準中相應地組織為 8 行,每行 6 個值。
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
這 $ j^\text{th} $ 以讀取順序掃描時表中的整數是輸入中對應於 $ j^\text{th} $ 輸出中的位(在 DES 中,約定是位從 1 開始編號,1 是第一位或左位,或八位組或四位組字元串中的第一個或左八位組中的最高有效位,八位組和以大端十六進製表示的四重奏)。
因此,表中的整數 1..28 對應於來自的位 $ C $ (並且恰好指向前 4 個 S-box);其他的對應於來自的位 $ D $ (去其他 S 盒)。
換句話說,我們通過獲取第 14位、第 17位、第 11位.. 第 13位和第 2位來形成輸出的前24位 $ C $ ; 以及接下來的 24 位輸出,取第 13位、第 24位、第 3位.. 第 1位和第4位 $ D $ (我們從 28 以上的整數中減去 28 得到索引 $ D $ ).
整數
9
18
22
25
且不35
38
43
54
在表中;它們對應於 $ C $ 和 $ D $ 沒有在這一輪中使用(但由於與 PC-2 一起使用的移位計數的組合,已經或將在上一輪或下一輪,如果有的話)。