DES算法加密流程
des基本特點
- 用56位密鑰加密64位數據(8個奇偶校驗)
- 采用分組加密,feistel密碼結構(feistel:簡單地說Feistel結構就是順序地執行兩個或多個基本密碼系統,使最后結果的密碼強度高于每個密碼系統的結果)
- 對稱算法:加密和解密除密鑰編排不同外,使用同一算法
- 密鑰較短,加密處理簡單,加解密速度快,適用于加密大量數據的場合
des算法總流程
詳細流程
每輪明文的加密(流程圖左半部分)
1.ip置換(先是左邊的明文加密部分)
1. 給定明文,通過一個固定的初始置換IP來重排輸入明文塊P中的比特,得到比特串P0=IP(P)=L0R0,這里L0和R0分別是P0的前32比特和后32比特
初始置換IP
?
2.將ip置換后的明文分成兩組
3.右邊進入分組密碼的輪函數F
4.右半部分繼續進入E盒擴展
因為子密鑰是48bit,所以將數據通過e盒擴展從32bit——>48bit(注意e盒擴展的規律)
?5.與子密鑰異或后,再通過S盒壓縮
48bit分成8組,通過8個s盒進行壓縮恢復為32bit(注意壓縮的方法:第一位與第六位組成行,中間四位組成列。最后查s盒得到的數據的二進制位壓縮后的四位結果)
例子
6.s盒的輸出結果,通過p盒置換輸出,輪函數F結束
7.輪函數F的輸出結果再與左半部分異或形成新的R,而原來的R則轉為L本輪結束
每輪子密鑰的生成(流程圖右半部分)
1.先減掉8奇偶校驗位,再通過pc-1置換
2.分兩組C0與D0進行循環左移位
?3.再進行pc-2的置換。52bit——>48bit,本輪子密鑰生成結束,下一輪密鑰靠C1、D1循環左移位后繼續通過pc-2置換
?最后16輪后注意左右交換,再進行一次ip逆置換即可得到密文
總結
- 上一篇: sql注入——day01
- 下一篇: DES算法C语言实现