Des

簡化 DES 為什麼是 10 位密鑰?

  • January 12, 2016

在簡化的 DES 算法中,明文是 8 位,而密鑰是 10 位,為什麼會這樣,為什麼不能都是 8 位呢?

如果您說的是聖克拉拉大學的 Edward Schaefer 教授開發的 S-DES,我可以嘗試向您解釋原因。

該算法輸入一個 10 位密鑰 (K),但使用密鑰生成算法,明文使用算法生成的兩個不同子密鑰(K1 和 K2)加密。

首先,您應該通過排列階段傳遞 10 位密鑰。

要生成 K1,請執行以下步驟:

  1. 將密鑰拆分為兩個長度相同的二進製字元串
  2. 將兩個鍵都傳遞給一個簡單的左移函式(shift = 1),然後再次加入它們
  3. 將密鑰(仍然是 10 位長)通過簡化排列函式(P8)傳遞,該函式簡單地挑選並排列 10 位中的 8 個。P8 功能根據以下規則工作:6 3 7 4 8 5 10 9

舉個例子:假設左移函式的輸出是 10 位密鑰 0000111000,那麼 P8 函式的輸出就是 10100100。

(3) 的輸出是 K1,將在第一輪加密過程中使用的密鑰。

現在,要找到 K2,過程實際上是相同的:

  • (1) 的輸入不是初始密鑰 (K) 也不是 K1,而是來自用於查找 K1 的左移函式的 10 位密鑰。因此,在您將此鍵拆分為兩個相等長度的子字元串後,將它們傳遞給左移位函式 (shift=2)。注意不同的移位值
  • 再次加入子字元串後,將生成的 10 位密鑰傳遞給 P8 函式以獲取 K2。

**注意:**初始置換階段(P10)接收輸入的初始 10 位密鑰,並根據以下規則得到置換後的 10 位: 3 5 2 7 4 10 1 9 8 6 P10 和 P8 之間的區別僅在於P8 僅置換一些位,而 P10 置換所有 10 位。

希望我有幫助!

引用自:https://crypto.stackexchange.com/questions/31891