Des
簡化 DES 為什麼是 10 位密鑰?
在簡化的 DES 算法中,明文是 8 位,而密鑰是 10 位,為什麼會這樣,為什麼不能都是 8 位呢?
如果您說的是聖克拉拉大學的 Edward Schaefer 教授開發的 S-DES,我可以嘗試向您解釋原因。
該算法輸入一個 10 位密鑰 (K),但使用密鑰生成算法,明文使用算法生成的兩個不同子密鑰(K1 和 K2)加密。
首先,您應該通過排列階段傳遞 10 位密鑰。
要生成 K1,請執行以下步驟:
- 將密鑰拆分為兩個長度相同的二進製字元串
- 將兩個鍵都傳遞給一個簡單的左移函式(shift = 1),然後再次加入它們
- 將密鑰(仍然是 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 位。
希望我有幫助!