DES:Data Encryption Standard
DES即是資料加密标準。DES設計的目的是用于加密靜态存儲和傳輸信道中的資料,安全使用10-15年(留下疑問:為什麼密碼算法會有年限設定?)
DES的特點:
(1)DES是分組密碼,綜合使用了置換,代替,代數等多種密碼技術,設計充分展現了商農所闡述的設計密碼的思想。
(2)明文、密文、密鑰的分組長度都是64位
(3)DES是對合運算,加密和解密共用同一算法
在數學中,對合函數是指函數 f(x) 滿足 f(f(x))=x。
(4)面向二進制,能夠加解密任何形式的計算機資料。
(5)密碼結構屬于Feistel結構。Feistel結構是什麼?
DES的加密過程
分組的意思,以64位為一組:輸入64位一組的明文,輸出64位一組的密文。
分組密碼就是一次加解密都是以組為機關。
DES的密鑰雖然為64位,但有8位作為奇偶校驗位,故密鑰實為56位。
對明文的處理:
輸入64位明文,
初始置換IP(Initial Permutation):将資料打亂并重新排列,分為左右兩部分,左邊32位作為L0,右邊32位位R0。
有初始置換矩陣。
對密鑰的處理:
三個流程:置換選擇1,循環左移,置換選擇2
輸入64位密鑰,得到16個48位長的子密鑰
置換選擇1:
64位密鑰首先進行置換選擇1,其作用一是從64位密鑰中取出8個奇偶校驗位;
(64位的密鑰每個位元組的最高位是奇偶校驗位。)
二是把其餘56位密鑰位打亂重排,前28位為C0,後28位為D0。
同樣都有置換矩陣。
Ci Di循環左移和置換選擇疊代16次
循環左移:
C0 D0循環左移,有相應的循環左移位數,有的為1,有的為2.為什麼?
循環左移位數表:
置換選擇2:
Ci Di合并成一個56位的中間資料,置換選擇就是從中選出一個48位的子密鑰Ki。
同樣有置換選擇矩陣。
密鑰與明文的操作
前面已經講了對明文和密鑰的處理
下面說明分析明文與密鑰是如何進行加密的:
加密函數:
R1=L0和f(R0,K1)異或得到。
每次R傳給下一個疊代的L
如此重複16次,最後你初始置換IP-1
輸出64位密文
加密函數f
32位輸入 選擇運算E 48位中間結果和48位子密鑰Ki模2相加
S盒6進4出 輸出f作用後的結果
代碼設計
函數
為什麼會用到0xff?
名詞解釋
- 分組密碼(block cipher)的數學模型是将明文消息編碼表示後的數字(簡稱明文數字)序列,劃分成長度為n的組(可看成長度為n的矢量),每組分别在密鑰的控制下變換成等長的輸出數字(簡稱密文數字)序列。
- 對稱加密是加密和解密共用一個密鑰的意思,DES加密解密運用同一算法,不過子密鑰使用的順序不同。
- Feistel結構: