DES(Data Encryption Standard)算法是一種分組加密算法,它基於Feistel密碼結構,具有以下特點:
分組長度:明文分組長度為64位。
密鑰長度:密鑰長度為56位,其中原始密鑰為64位,用戶提供56位,其餘8位由算法自動填充,用於奇偶校驗,確保密鑰在分配和存儲過程中無錯誤。
加密流程:
密鑰生成:生成16個子密鑰,每個48位,用於後續加密操作。
初始置換:對64位明文數據進行置換,生成新的64位數據塊。
分塊加密:將初始置換後的數據塊分為左右兩個32位數據塊,每輪加密計算這兩個數據塊的加密結果並交換,作為下一輪的輸入。
輪函式:核心操作,使用32位數據塊和48位子密鑰進行加密,產生新的32位數據塊。
逆初始置換:加密的最後一步,將加密後的數據塊進行置換,得到64位密文。
DES算法的保密性依賴於密鑰,且其有效密鑰長度為56位。由於分組長度為64位,DES算法需要將明文數據以該長度進行分塊,並逐塊執行加密操作。DES算法需要重複執行16輪相同的操作,且在每次操作時都交換左右數據,每輪的子密鑰也都經過密鑰置換算法重排。