經典分組密碼-DES演算法
DES演算法是1972年美國IBM公司研製的對稱密碼體制的一種加密演算法。
一.性質特點
1.分組密碼:明文密文長度均為64位
2.面向二進位:意味著可以加密任何形式的計算機數據
3.對合運算:加密解密運用同一種演算法,同一個密鑰。加密解密唯一的不同只是子密鑰的使用順序不同而已
4.特點:分組比較短、密鑰太短、密碼生命周期短、運算速度較慢
二.加密過程
主要過程分為兩大部分,密鑰生成和加密流程
1. 密鑰生成
第一步:置換選擇1
i):將64位的密鑰分為8個位元組。其中每個位元組前7位為密鑰,第八位為奇偶校驗位。
ii):去掉奇偶校驗位,並把剩下的56位打亂重新排序
iii):把重新排序之後的56位密鑰的前28位作為C0,後28位作為D0.
第二步:循環左移
將 C0 D0 分別循環左移1位或2位,生成Ci Di ,每次循環位數根據迭代次數決定.
迭代次數
第三步:置換選擇2
將Ci Di 合併成一個56位的中間數據,根據置換矩陣從中選出一個48位的子密鑰Ki .
注意:經過置換選擇2之後,生成的一個56位中間數據,在選出子密鑰之後,立即進行第二次循環左移,用以生成下一個子密鑰.
2.明密文處理
對明文:初始置換 IP
將64位明文按照初始置換IP表打亂重排,並分為左右兩半,令左邊32位為L0 ,R0 ,留待加密處理
對密文:逆初始置換IP-1
逆初始置換IP-1是初始置換的逆置換
3.加密函數f
第一步:選擇運算E
i):對輸入的32位數據組的各位進行選擇和排列,產生一個48位的結果選擇運算矩陣:
32 | 01 02 03 04 | 05
04 | 05 06 07 08 | 09
08 | 09 10 11 12 | 13
12 | 13 14 15 16 | 17
16 | 17 18 19 20 | 21
20 | 21 22 23 24 | 25
24 | 25 26 27 28 | 29
28 | 29 30 31 32 | 01
中間為32位,矩陣最左邊和最右邊為擴展位,擴展後32位數據變為48位
ii):將經過運算矩陣之後的48位數據與對應的48位子密鑰Ki模二相加,待下一步處理。
第二步:代替函數S(S盒)
替代函數由8個替代函數(也稱為S盒),8個S盒分別成為S1~S8.
每個S盒有一個選擇矩陣,有4行16列十進位數字,規定了輸入輸出的選擇規則。
每個S盒有6位輸入,4位輸出。
選擇規則是:
6位輸入中第一位和最後一位組成的二進位數值表示行號,
除去第一位和最後一位剩下的四位數字所組成的二進位數表示列號,
二者交叉位置的數字作為輸出值(注意:以二進位方式輸出)
替代函數組:
因為S盒是進6出4,所以輸入48位數組之後輸出的是32位數據。第三步:置換運算P(P盒)
把S盒輸出的32位數據按照置換運算矩陣打亂重排,得到32位加密函數輸出。
4.加密流程
看流程圖就可以知道,
第一步:將R0與密鑰K1一起代入加密函數f中運算,得到一組32位數據
第二步:將得到的32位數據與L0模二相加,並命名為R1
第三步:將R0重命名為L1,
不斷重複上述步驟,16輪之後加密完畢
三.解密過程
將密文當作明文輸入,顛倒一下子密鑰使用順序即可。
四.現狀
DES演算法本身的安全性很高,除了窮舉攻擊之外其他數學攻擊手段都幾乎無效,但是DES在設計的時候就沒有考慮到弱口令的問題,而弱口令又會使得密碼很容易被窮舉攻擊攻破。
於是就有了之後的三重DES演算法,流程基本一樣,只不過加密三次,有效提高了抵抗弱口令窮舉攻擊的能力。
推薦閱讀: